欢迎访问我的博客: http://yanzhichen.top/
MBE(Modern Binary Exploitation)是RPI(伦斯勒理工学院)开设的PWN(漏洞利用)课程,本着由浅入深的原则,从基本的逆向分析开始,涵盖了内存溢出,编写shellcode,字符串格式化等内容。
以下为 lab1 的 writeup
题目:
附件: 附件
首先,把它拖到 Exeinfo PE 里边看一下
嗯,32位,没有壳,那就直接拖到32位IDA里边F5,结果是这个样子滴。
整体代码逻辑比较简单,双击一下第10行的“storedpass”,可以看到IDA跳转到了 .data 段的这个位置,并且在这个位置存放着一个字符串。
这就好理解了,他就是。。嗯??,第12行的 “134520864” 是什么鬼???双击一下试试,额,没反应,右键转成16进制看看:
结果是"0x804A020",咦。。有点儿眼熟,哦,就是 .data 段存放 storedpass 的位置呀,嗯,这下就全部理解了。
storedpass存放的字符串的长度为 len,其中的每个字符所在的位置为 i(i从0开始)
用户输入的字符串为 v5
需进行匹配的对象为 storedpass存放的字符串中每个字符与其所在位置i异或组成的新字符串
将v5的前 len 个字符与 需进行匹配的对象 匹配,如果能全部匹配,则 Success!
开始写代码
这里提示一下:
chr():用一个整数作参数,返回一个对应的字符。
ord():用一个字符做参数,返回一个对应的整数
最后测试一下:
发现结果是正确的,并且这个程序只会校验前 len(storedpass) 个字符,如果超过4个字符还会缓冲区溢出。
知道了目标设备能缓冲区溢出,那么就可以构造ROP,进而远程代码执行(RCE),拿到目标设备的shell,这些比较高级,还需要进一步的学习,随着学习的深入,以后再回过头来做补充。