#刷题第一天
#突然好像在get到了调试
先vi exp.py
写个exp,写的过程中加个 attach(./name)
和raw_input
之后就可以链接本地开始打。
#记一个简单的pwn题
1.先加个可执行权限,再跑跑
ls了一下发现灰的,那就加个执行权限,chmod u+x pwn
。完了没事儿跑跑。
出来一堆乱七八糟的字母,随便回两个,它也回我们一样的,然后推出了,笑死。
2.checksec看看开了哪些保护
查查看位数和保护机制,笑了。64位,只开了nx。
3.okk,上ida
先看逻辑。
主函数里面两个函数,welcome和vul
welcome就是打开一个文件,并没发现漏洞。因为要打开文件,所以本地打的时候要先建个文件welcome.txt。
康康下个函数vul
来了,师父讲的那个有个def的定义。这个无了,不过,
问题不大!
康康buf是0x30的栈的空间,buttttt!
read却读0x64.
笑晕在厕所,这下开nx也没用。
再康康。
有后门!!!记个后门地址。
笑死。
4.开做!
没开pie,so地址不会变,于是考虑ret栈平衡。
记两个地址。ret和后门。
出于基本尊重,调试一下。
gdb pwn
在vul那下个断点`b*4008E1’。先看到vul地址.
之后r跑一下。
n看看。到read那。
随便输‘\n’,笑死,手太快,输了个换行,不过问题不大,结果就是查看到我们输入的东西里rbp0x30,完了加个rbp8.出来了。考虑个栈平衡加个p(ret)。不加本地也跑过了。看情况呗。
okk接下来脚本。