일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- #MINT64 #Sqix
- vi 외부 명령어
- libtins
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- libpcap
- #Best of the Best #OS #MINT64 #Sqix
- #
- #Qt Creator
- Network
- 오버워치 세이버메트릭스
- FTZ 레벨2
- C++11
- command
- >
- #IntelManual
- 오버워치
- Sqix
- ftz
- linux
- vim
- 인터럽트
- Overwatch League SaberMetrics
- Find
- BEST of the BEST
- vi
- KASAN
- Today
- Total
Sqix
Pwnable.kr - Toddler's Bottle : Flag 본문
이번에는 pwnable.kr - flag 문제를 풀어보는 시간을 갖겠습니다. 처음 문제를 켜면 http://pwnable.kr/bin/flag를 다운로드 받으라고 합니다. 마찬가지로 wget을 통해서 다운로드 받고, gdb를 이용할 수 있도록 chmod 775를 하여 권한을 올려 주도록 하겠습니다.
리버싱 문제이기 때문에, 문자열이 어떤 것이 있는지를 확인해 보고자 strings flag 명령어를 이용하여 문자열을 추출해 보았습니다. strings flag > flag_str.txt와 같은 식으로 파일로 문자열 추출 결과를 넘겨받으면 편리합니다. 그런데, 뒤져 보니 저렇게 upx로 패킹되어있음이 나옵니다. 만약 upx가 없으시다면 apt-get install upx 명령어를 통해 다운로드 받으시면 됩니다. 그 후, upx -d ./flag 명령어를 통해 패킹을 해제해 줍니다.
flag로 검색해 보면, 다음과 같은 문자열이 뜹니다. 실제로 실행을 할 때도 저러한 문구가 뜹니다. malloc하고 strcpy하여 flag를 넣어놓을 테니 가져가 봐라! 하는 문자열이요. 사실 flag는 저 위의 UPX...? ~ 하는 문장입니다. 처음에 넣어 보았더니 답이 맞더라구요.. 그래도 gdb로 까 보는게 도움이 될 것 같아 그 이후도 계속해서 진행을 합니다.
gdb로 파일을 열어 봅니다. puts를 통해서 위의 문자열이 등록되고, malloc을 하여 동적 할당을 하고, strcpy를 하기 위해서 인자를 집어넣습니다. rdx에는 문자열이, rax에는 버퍼가 들어가기 때문에, 결국 rdx 부분을 본다면 원하는 flag가 튀어나올 것입니다.
바로 이렇게 말이죠!
'Wargame > Pwnable.kr' 카테고리의 다른 글
Pwnable.kr - Toddler's Bottle : Buffer Overflow (0) | 2017.09.06 |
---|---|
Pwnable.kr - Toddler's Bottle : Hash Collision (0) | 2017.09.04 |
Pwnable.kr - Toddler's Bottle : File Descriptor (0) | 2017.09.01 |