pwn
your_pwn
先check 一下,发现保护全开,还是有点慌的
进入到IDA审计代码
在其主要代码里存在下标溢出,很明显地可以进行任意地址读和写(因为对于数组v4的下标v1没有进行任何的限制),思路其实就出来了,先利用任意地址读泄漏出真实地址,再通过任意地址写将返回地址修改成onegadget
只是这里的读和写处理有点麻烦而已,因为它是单个字节读取和写入的,所以每次都要进行6次操作。
先确定v4[0]的位置
gdb下断第一次输入v4[0]=100(0x64)单步跟踪找到0x64的位置
确定返回地址和要泄漏的真实地址跟v4[0]的偏移
这里其实我还算出另一个偏移:就是v1跟v4[0]的偏移,是40,为最后的退出getshell做准备,同样找到v1的位置就可以了,这里我就不截图了。
获得onegadget地址
找泄漏出真实地址之后 就可以得到偏移,再查看onegadget:one_gadget+libc库
修改返回地址为onegadget
exp:
1 | #coding:utf-8 |
baby_pwn
check,只开了NX
程度很简单,一个栈溢出漏洞,没有任何其它可用的函数,程序干净得可怕,其实就很容易想到runtime_resolve了,直接改脚本
exp:
1 | #-*-coding:utf-8-*- |
re
easyGo
无符号GoLang,贴上网上一篇介绍GoLang逆向的文章,此题就是文章中的demon,flag 都没变,https://www.jishuwen.com/d/2NaJ
再附上一篇无符号Golang程序逆向方法解析https://www.anquanke.com/post/id/170332