일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Windows Kernel Driver
- Windows
- apphelp.dll
- Windows Kernel
- pcap packet
- vcruntime.dll
- Windows Kernel Debug
- 시스템해킹
- C언어 패킷캡쳐
- 개발하기
- hacking
- IAT Hooking
- 개발 환경 준비
- 포너블
- 윈도우 커널
- 바이트 오더
- Network Byte Order
- ucrtbase.dll
- packet capture
- 윈도우 커널 드라이버
- windows kernel debugging
- 네트워크 바이트 오더
- arudino
- Msvcrt.dll
- 윈도우 커널 디버깅
- HackCTF
- pcap packet capture
- vcruntime140.dll
- 해킹
- pwnable
- Today
- Total
미친해커
[HackCTF] Pwnable : Basic_BOF #2 본문
문제 이름을 보아 Buffer OverFlow 문제로 예상된다.
우선 바이너리를 다운받아 IDA Pro 로 디스어셈블을 해보자
코드를 보면 변수 s와 함수 포인터 v5가 선언되어 있다. s는 배열인것으로 보인다. 그리고 v5에 sup라는 함수의 주소를 넣고 fgets를 이용해 s에 133(0x85)바이트 만큼 입력을 받은 후 v5에 들어있는 함수를 실행한다.
s의 공간은 0x8C - 0xC = 0x80 총 128 바이트이다. s부터 +129 바이트부터는 v5의 데이터가 들어가 있다. fgets에서 133 바이트를 s에 입력받으니 Buffer OverFlow가 발생돼 v5의 데이터를 덮어쓸 수 있다. 그렇다면 v5의 데이터를 덮어씌어 실행되는 함수를 다른함수로 조작하여 flag를 얻어낼 수 있을 것으로 보인다.
이번 문제에서는 sup라고 하는 사용자 정의 함수가 등장했다. IDA의 Functions window를 확인해보면 현재 바이너리에서 사용하는 함수들을 확인 할 수 있다.
위 함수들을 보면 눈에 띄는 함수 3개를 확인할 수 있다. 각각의 함수를 디스어셈블을 시켜보면 다음과 같은 코드를 확인 할 수 있다.
sup 함수는 변수 s를 출력한다.
shell 함수는 Shell을 띄워준다. 그렇다면 main에서 Buffer OverFlow를 발생시켜 v5의 들어있는 함수를 shell로 덮어쓰면 shell 함수가 실행되면서 Shell을 따낼 수 있다.
shell 함수의 주소는 gdb의 print 기능을 이용 또는 IDA의 Functions window 에서 확인할 수 있다.
# file : bof_basic2.py
from pwn import *
#p = process('./bof_basic2')
p = remote('ctf.j0n9hyun.xyz', 3001)
payload = 'A' * 0x80 + p32(0x0804849b)
p.sendline(payload)
p.interactive()
payload는 128 (0x80) 바이트를 채우고 뒤에 shell 함수의 주소를 패킹하여 붙여준다. 그러면 v5에 있는 함수가 shell 함수로 바뀌어 실행되면서 Shell이 얻어지고 flag를 얻을 수 있게된다.
'Hacking > HackCTF' 카테고리의 다른 글
[HackCTF] Pwnable : x64 Simple_size_BOF (Simple_size_bof) (0) | 2021.06.19 |
---|---|
[HackCTF] Pwnable : x64 Buffer Overflow (64bof_basic) (0) | 2021.06.18 |
[HackCTF] Pwnable : 내 버퍼가 흘러넘친다!!! (prob1) (0) | 2021.06.17 |
[HackCTF] Pwnable : Basic_FSB (0) | 2021.06.17 |
[HackCTF] Pwnable : Basic_BOF #1 (0) | 2021.06.16 |