0x1 - MISC
MISC100
一张帅行的照片
目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改
010editor查看一下,发现在jpg文件尾之后还有大量的数据
而且在灰色部分发现了IHDR,是png文件的一个标志,所以应该是文件连缀之后删去了png的文件头、尾
所以可以进行修复,在灰色部分前后分别加上png的文件头尾,并删去前面帅行的数据
保存之后发现图片是纯白的,而且在linux下无法打开
->有可能是文件长宽被修改之后crc校验不匹配导致的
详情见M4X司机http://www.cnblogs.com/WangAoBo/p/7108278.html
提供两种方法
①利用crc进行宽和高的爆破,得到正确的尺寸,修改得到完整图片
flag就是帅行的女朋友标准
②直接删去部分数据
这个操作不是很稳,但是比写脚本爆破要快一点
可以看到在图片中存在大量的单调规则的数据,不会是有价值的信息
所以可以直接把这部分删掉,把下面被隐藏的部分暴露出来
效果也还不错
MISC200
一个多重压缩包,tar.gz方式压缩的
经过简单查看,每两层一个数字作为名字,先解压gz,之后是tar包
exp:
#!/usr/bin/env python import gzip import os import tarfile def un_gz(name): g_file = gzip.GzipFile(name) new_name = name+"tar" open(new_name,"w+").write(g_file.read()) g_file.close() # un_gz(new_name) tar = tarfile.open(new_name) name = tar.getnames()[0] tar.extract(name) tar.close() un_gz(name) un_gz("800")
get flag:
0x2 - Reverse
Reverse100
这就是关键函数了
把a1的每一位和0x804A040的每一位进行比对
比较简单的逻辑,把运算的优先级看好,按照逻辑写出反向计算脚本
exp:
s=[0x8F,0xAA,0x85,0xA0,0x48,0xAC,0x40,0x95,0xB6,0x16,0xBE,0x40,0xB4,0x16,0x97,0xB1,0xBE,0xBC,0x16,0xB1,0xBC,0x16,0x9D,0x95,0xBC,0x41,0x16,0x36,0x42,0x95,0x95,0x16,0x40,0xB1,0xBE,0xB2,0x16,0x36,0x42,0x3D,0x3D,0x49] a=‘./re100‘ ls=‘‘ for i in range(42): t=(((s[i] & 0xAA) >> 1) | (2*(s[i]&0x55)))-9 ls += chr(t&0xffff) print(ls)
需要注意的是,减号的优先级还挺高的,漏掉原来的一个括号,就得不到正确的结果了
Reverse200
一个64位程序,check被破坏了,不能用ida使用F5,下面给出三个方法
①使用gdb调试
在gdb中,找到strcmp函数,查看参数就能直接看到flag(M4x的图,别问我,我还没get技能,会玩了可能来补一下)
②修复程序,使其可以使用F5查看伪代码
左箭头指向处ALT+ k,把右箭头指向处改为0即可
下面应该就比较好弄了
③利用程序漏洞爆破
也就我这么皮,上面删图片数据,下面用漏洞爆破了
在题目更新之前,存在一个逻辑错误
在试运行时发现输入“flag”,也能得到输入正确的反馈
所以很容易想到如果输入预期字符串的前n的字符,那么会得到正确回馈
所以可以根据这个特性进行逐位爆破:
在已知flag后加入一个可打印字符,如果回馈正确,就把这个字符加入flag中
到最后能得到完整的flag
exp:
#!/usr/bin/env python from pwn import * import string # context.log_level=‘debug‘ payload = ‘flag{‘ feedback = ‘‘ sou = string.printable # print sou while(1): for i in sou: pay=payload+i io=process("./re200") elf = ELF("./re200") io.sendline(pay) feedback = io.recvline() if(feedback[19]==‘l‘): payload = pay print pay break io.close() if(pay[-1]==‘}‘): break
也就几十秒就出来了,看来官方解答还是用gdb嘛
0x3 - PWN
pwn100
等服务器网线插上在写吧
pwn200
pwn400