2025 Securinets CTF pwn wp
出题人你还好吗?我不好:)
PushPullPop
Push Pop Shellcode
只能有push和pop的shellcode,且push和pop的参数只能是寄存器
非预期
可以用无效字节码(如0x60
)进行截断,这样后面的字节码就不会检查了
1 |
|
exp忘存了……🤡
可以把栈迁到rwx上,设rax为一个合法地址,然后push一个0(add [rax], al
)把无效字节码改了就行
预期
不能截断了,鉴于不能push立即数,想造syscall只有利用内存里已有的数据
但0x50f
不是个好找的数,就算有想靠栈迁移+pop到达也很困难,而且内存内容是个玄学:(
后来考虑在可写段上找能当指令执行的数据(这样可以push xxx; pop rsp
栈迁过去再迁回来),最后考虑指令add [rax], dl
,0x1000
是个更常见的数据,栈上稳定有一个

且栈上的搜索比较方便,可以通过rbp链快速跳跃

然后用0x1000
改字节码写一个0x50f
出来
Exp
1 |
|
vtable
闲的没事(mo yu🐟)摸了一下这道题
思路
给一个stdout地址,能改stdout但只能改到vtable之前
通过_chain造一个错位(这里选择stdout-0x10),就能改vtable了
因为这样改不到_flags,所以打apple调gets进行一波输入,再打一波apple执行system(“/bin/sh”)
Exp
不知道为什么本地和docker偏移不一样,懒得找发生什么了
1 |
|
2025 Securinets CTF pwn wp
http://akaieurus.github.io/2025/10/06/sec2025pwn/