BUUCTF:cmcc_simplerop
0x01 文件分析
32位程序,开启NX、部分RELRO保护
0x02 运行
输入一串字符串
0x03 IDA
main
函数
存在栈溢出漏洞
0x04 思路
0x04-1 解法一
- 该题没有
system
函数也没有"/bin/sh"
,也无法泄露函数真实地址 - 可利用
int 80h
系统调用
设置系统调用参数即可执行
execve("\bin\sh",0,0)
,获取shell
四个参数分别是eax
、ebx
、ecx
、edx
- 利用
ROPgadget --binary simplerop --only "int"
找到int 80h
地址为0x080493e1
- 利用
ROPgadget --binary simplerop --only "pop|ret" | grep "eax"
找到pop eax; ret
地址为0x080bae06
可对
eax
进行赋值
- 利用
ROPgadget --binary simplerop --only "pop|ret" | grep "ebx"
找到pop edx; pop ecx; pop ebx; ret
地址为0x0806e850
可对
edx
、ecx
、ebx
进行赋值
- 由于没有
"/bin/sh"
,需要利用read
函数将"/bin/sh"
写入bss
段
没有开启地址随机化,因此可直接利用
bss
段地址0x080eb584
read
函数地址0x0806cd50
0x04-2 解法二
- 使用
mpr