일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HackCTF
- Whois #AjouUniv #정보보안교육 #Pwnable
- AjouUniv #Whois #정보보안교육
- 코딩도장
- ftz
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- 아주대학교 #Whois #정보보안교육 #4주차
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- AjouUniv #Whois #Reversing
- AjouUniv #SuniNatas #Web
- Allocation Starategy
- 아주대학교
- Whois #정보보안교육 #AjouUniv #Pwnable
- 스케줄링
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- 운영체제
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- hackerschool
- Pwnable
- 사이버보안학과
- systemhacking
- Whois #정보보안교육 #Ajou
- N0Named
- Whois #정보보안교육 #webhacking.kr
- python
- Variable Partition
- Memory Virtualization
- AjouUniv #Whois #정보보안교육 #Pwnable
- Dreamhack
- webhacking
- Today
- Total
chipkkang9's story
[Whois 정보보안교육] passcode 문제풀이 본문
준비물
IDA Pro 7.0, Linux 작업환경 (본인은 kali linux를 사용함)
IDA Pro – Hex Rays
Substantial changes Is to be expected in every release: new features, supported processors, etc which are all added after deliberation and discussion.
hex-rays.com
문제소개
문제풀이
문제 화면부터가 굉장히 어지럽다.
이번 주차에 배운 개념이 카나리라서 그런 걸까... 심오한거같네...
우선 프로그램을 받고 IDA로 열어보았다.
main 함수는 이와 같다.
쭉 읽어보면,
generate_passcode 함수에서 난수로 패스코드를 생성하고 있고,
중간에 puts함수로, 그 안에는 passcode가 있을 수 있음을 암시하고 있다.
자세히보니, buf의 크기는 0x18개인데, 12번째줄에서 0x30개를 입력받고 있다.
여기서 알 수 있는 것은 printf함수를 통해서 널바이트를 뚫을 수 있다는 것,
그리고 이로 leak을 일으켜 passcode를 얻을 수 있겠다는 것을 알 수 있다.
여기까지 구현하는 프로그램을 pwntools를 이용해 구현해보았다.
이렇게 구현해주고 실행시키면,
printf 뒤에 있는 데이터들이 leak 되는 것을 확인할 수 있다.
그렇다면, 해당 passcode를 다시 받아서 비교시킨 후,
ret 값에는 system(cat flag); 명령어가 있는 win함수로 이동시키면 문제 해결일 것이다.
(사전에 찾아보았더니, win 함수에 system 함수가 들어있었다.)
gdb에서 p (함수이름)을 검색하면 해당 함수가
어떤 주소에 존재하는 지 알 수 있다.
win의 주소를 찾아보니, 0x4012d0의 위치에 존재함을 알 수 있었다.
그럼 이제, passcode를 받아 비교하는 것.
비어있는 스택을 채워주고, rbp를 임의의 값으로 채워준 후,
ret 영역에는 win함수를 호출하게끔 pwntools로 구현해주면 된다.
완성된 코드는 다음과 같다.
구현한 프로그램을 실행시키니 flag가 잘 나오는 것을 확인할 수 있었다.
솔직히 2번 어려웠다... 정확히 어떻게 풀리는 로직인지 아직 완벽하게 이해하진 못한 것 같다.
나중에 조금 더 알아보기 쉽게 블로그를 수정해보겠다.
'CTF > Pwnable' 카테고리의 다른 글
[Whois 정보보안교육] canacode 문제풀이 (0) | 2021.11.29 |
---|---|
[Whois 정보보안교육] assemlator 문제풀이 (0) | 2021.11.29 |
[Whois 정보보안교육] assembly 문제풀이 (0) | 2021.11.29 |
[Whois 정보보안교육] system 문제풀이 (0) | 2021.11.22 |
[Whois 정보보안교육] Magic Spell 문제풀이 (0) | 2021.11.20 |