CISCN 2019华南 PWN3
解法
这题有两种解法
- csu
- srop
ret2csu
.text:00000000004004E2 mov rax, 3Bh ; ‘;’
.text:00000000004004E9 retn
程序中白给了一段gadgets,0x3b刚好对应execve,我们就可以调用它,然后通过rop构造另外三个参数
/bin/sh,0,0
分别对应rdi, rsi, rdx
leak addr
首先我们通过sys_read
读入字符串,但是我们不知道其位置,只知道是在栈上,于是我们就要泄漏栈地址并且拿到字符串输入的地址
这里我们可以通过gdb可以发现,我们输入的地址距离栈基址的偏移是固定的0x118
write打印出0x30个字节,可以看出从低地址开始打印0x20个字节后0x8就是栈基址,所以我们构造
payload1 = b'/bin/sh\x00' + b'b' * 8 + p64(vul_addr) |
来泄漏出输入/bin/sh的地址,并且返回到vul函数,进行再一次的利用
csu
之后就是打csu的部分了,这里可以去wiki上学习下或者参考其他师傅的wp
exp
from pwn import * |
SROP
signal机制
- 用户进程接到一个signal,将控制权给到内核层
- 内核会为该进程保存相应的上下文,主要是将所有寄存器压入栈中,以及signal信息和sigreturn的系统调用地址,之后跳转到注册过的 signal handler 中处理相应的 signal
- 执行完signal handler,就跳转到内核层
- 内核恢复2中保存的进程上下文,并把控制权给到用户层
攻击思路
我们可以在恢复进程上下文的时候,构造一个fake_SigFrame,就能控制寄存器来劫持程序流程
对于ctf题pwntools里是集成了框架,如上题
sigreturn = 0x00000000004004DA |
只需要改payload2那一部分,要注意指定context.arch = "amd64"
CISCN 2019华南 PWN3
# 相关文章
1.Web常见中间件复现
2.Dest0g3 520迎新赛
3.2022DASCTF MAY 出题人挑战赛
4.NSSRound3---This1sMysql 复现
5.🌟CTF2022-Web部分WriteUp
6.爬取网易云评论数据
7.Burpsuite---反序列化专题
8.
1.Web常见中间件复现
2.Dest0g3 520迎新赛
3.2022DASCTF MAY 出题人挑战赛
4.NSSRound3---This1sMysql 复现
5.🌟CTF2022-Web部分WriteUp
6.爬取网易云评论数据
7.Burpsuite---反序列化专题
8.