일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩도장
- 아주대학교 #Whois #정보보안교육 #4주차
- python
- ftz
- 스케줄링
- AjouUniv #Whois #Reversing
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- Dreamhack
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- systemhacking
- Whois #정보보안교육 #AjouUniv #Pwnable
- 사이버보안학과
- Pwnable
- 운영체제
- N0Named
- Memory Virtualization
- AjouUniv #Whois #정보보안교육
- Variable Partition
- HackCTF
- 아주대학교
- AjouUniv #SuniNatas #Web
- Whois #AjouUniv #정보보안교육 #Pwnable
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- Whois #정보보안교육 #webhacking.kr
- Whois #정보보안교육 #Ajou
- webhacking
- AjouUniv #Whois #정보보안교육 #Pwnable
- hackerschool
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- Allocation Starategy
- Today
- Total
chipkkang9's story
[HackCTF] Basic_BOF #2 문제 풀이 본문
준비물
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
문제소개
문제풀이
앞선 문제인 Basic_BOF #1과 마찬가지로, 32bit binary 파일이 주어져 있다.
IDA로 열어보도록 하자.
뭔가 많이 간결한듯한 코드이다.
스크린샷에 다 담지는 않았지만, main 함수 외에도 sup, shell 함수가 존재한다.
sup 함수는 puts함수를 통해 s 를 출력하는 역할,
shell 함수는 예상하기 쉽게도 쉘 권한을 따오는 역할을 한다.
그럼 처음부터 파일을 해석해보자.
char 형 변수 s가 총 128byte(8Ch - Ch)의 크기로 선언되어 있다.
그리고 곧 이어 void형 함수 포인터 v5가 선언되어 있다.
우선 v5에 sup 함수가 들어가고,
그 다음 fget로 s의 값을 받으며,
마지막으로는 v5가 실행되겠다고 파일은 해석된다.
그렇다면 우리가 해야할 것은 상당히 간단하다.
스택상으로는 s가 v5보다 선행하므로,
s를 입력받는 코드에서 s의 크기보다 넘치는 값을 입력하면
넘치는 만큼 v5로 흘러갈 것이다.
그래서 s를 입력해줄 때, shell함수의 주소값을 넘겨준다면,
v5를 실행할 때, shell 함수가 실행될 것이다.
그러면 shell 함수의 주소값을 알아낸 후,
페이로드를 짜서 s를 덮은 후에 바로 주소값을 보내주면 되겠다.
shell 함수의 주소는 다음과 같이 알아낼 수 있다.
리눅스에서 gdb를 통해 bof_basic2를 실행시키고,
shell 함수를 검색하면 된다.
그리고 이를 토대로 페이로드를 짜주면,
이렇게 짜줄 수 있고,
위 코드를 그대로 실행시키면?
올바르게 쉘을 가져올 수 있었고,
flag도 예쁘게 나온 모습이다.
'CTF > Pwnable' 카테고리의 다른 글
[HackCTF] Basic_BOF #1 문제 풀이 (0) | 2021.12.28 |
---|---|
[Whois 정보보안교육] Part-time Job 문제풀이 (0) | 2021.12.06 |
[Whois 정보보안교육] canacode 문제풀이 (0) | 2021.11.29 |
[Whois 정보보안교육] assemlator 문제풀이 (0) | 2021.11.29 |
[Whois 정보보안교육] passcode 문제풀이 (0) | 2021.11.29 |