CTF/HackCTF (ctf.j0n9hyun.xyz)

[Pwnable] basic_bof_1 Write-up

JUNFUTURE 2022. 1. 8. 18:16

확장자가 FILE인 파일

윈도우에서 파일형식 : 파일인 파일이 있다.

이거는 리눅스 실행파일인 ELF일 확률이 높으니, 리눅스에서 열어보자.

역시나마 32비트 ELF 파일이었다.

FILE에 대해서 조금 더 자세하게 알아 보고 싶으면 요 글을 참고해보자

https://juntheworld.tistory.com/75

 

확장자가 FILE인 파일

이게 뭔가 싶었다. 확장자가 FILE인 파일? 장난치는건가? 싶었지만 윈도우 입장에선 충분히 그럴 수 있지다. 리눅스 실행파일 ELF 파일이다. 윈도우 입장에서는 충분히 이게 뭔가 싶을 만도.. 윈도

juntheworld.tistory.com

아무튼 ELF파일이 뭔지 알았고, 소스파일은 제공되지 않으니
IDA를 이용해서 열어보았다.

15라인에 system함수가 있고 12라인의 if문 조건을 만족하면 14-16라인을 실행시킬 수 있었다.
여기서 v5는 main함수 안에 있는 지역변수이고 7번라이넹서 s에 입력을 받고,

버퍼크기는 40인데 입력받는 크기는 45여서 딱 깔끔하게 v5까지 덮을 수 있겠다.

 

여기서 아이다에 속았다. (내가 몰랐다.)
char s[40]이 v5보다 메모리에서 더 낮은 주소에 있다.
// [esp+4h] [ebp-34h]
// [esp+2Ch] [ebp-Ch]

부분에서 s[40] 위치가 v5보다 메모리에서 낮은 주소에 있는 걸 알 수 있지만
요 부분들이 메모리에서 시작주소 위치를 알려주는지 몰랐다 나는.
그래서 s가 v5보다 더 높은 주소 (먼저 스택에 push)에 있는 줄 알았다. (IDA는 hex-ray는 pseudo code일뿐)

(꿀팁 : 아이다 정수 HEX <-> DEX 변환 명령어는 h이다.)

https://juntheworld.tistory.com/71?category=985086 

 

내가 보려고 만든 IDA PRO 단축키 정리

h : 숫자 DEX(10진수) HEX(16진수) 변환 ; : 주석달기

juntheworld.tistory.com