티스토리 뷰
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
- hackerschool
- CodeEngn
- 안드로이드 멘토링
- Level 06
- wargame
- c++
- 17th HackingCamp CTF
- HackingCamp
- 안드로이드
- reversing.kr
- Programming
- xcz.kr
- unity2d
- Level 01
- Reversing
- Unity
- Level 02
- Level 04
- Level 05
- Android
- 풀이
- Write-up
- Basic RCE
- Level 03
- ftz
- 멘토링
- C#
- Advance RCE
- 유니티
- pwnable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함