티스토리 뷰
Hackerschool FTZ의 Level 13 풀이입니다.
버퍼 오버플로우를 일으켜야 하는데 i 값을 보존시키면서 쉘코드를 삽입해야 할 것 같습니다,
main 함수를 분석해보니 변수 i의 값을 보존시켜야만 한다는 것만 제외하면, 기존의 문제와 같게 strcpy 함수를 이용해서 버퍼 오버플로우 공격을 해야 하네요.
입력받은 값을 0xfffffbe8부터 붙였는데 0xfffffff4가 변수 i 값입니다.
0xfffffff4 - 0xfffffbe8 = 1036
그러므로 1036개의 값 뒤에 변수 i의 값을 넣고 ebp-4 까지 덮어 씌어주기 위해 12byte를 더 쓰고 RET과 더미 크기만큼인 4byte, 그리고 공격 코드를 넣어주는 방식으로 쉘코드를 작성하면 될 것 같습니다.
변수 i 값과 버퍼값을 비교하는 곳에 BP를 걸고 문자를 1024개 입력했더니 SFP = 0xbfffe5f8, RET = 0x42015574라는 것을 알 수 있었습니다.
gdb에서 system 함수의 주소를 구한 뒤 system 함수에서 사용하는 /bin/sh 문자열 주소를 구하는 코드를 짰습니다.
이제 위에서 말한 대로 공격 코드를 작성해서 입력해주면..
Password : what that nigga want?
'Pwnable > Hackerschool' 카테고리의 다른 글
[Hackerschool FTZ] Level 15 풀이 (0) | 2018.10.04 |
---|---|
[Hackerschool FTZ] Level 14 풀이 (0) | 2018.10.03 |
[Hackerschool FTZ] Level 12 풀이 (0) | 2018.05.09 |
[Hackerschool FTZ] Level 11 풀이 (0) | 2018.04.16 |
[Hackerschool FTZ] Level 10 풀이 (0) | 2018.03.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Programming
- wargame
- Unity
- Advance RCE
- 안드로이드 멘토링
- Level 02
- Level 06
- Level 05
- Level 01
- Write-up
- reversing.kr
- Level 03
- pwnable
- 유니티
- unity2d
- Basic RCE
- xcz.kr
- C#
- 멘토링
- 안드로이드
- 17th HackingCamp CTF
- ftz
- CodeEngn
- c++
- 풀이
- HackingCamp
- Level 04
- Android
- hackerschool
- Reversing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함