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/