일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해킹
- 스콜피온킹
- 킹덤 고근희
- 리리남매
- 은혜의 강 교회
- 스페인 코로나
- 최강욱
- 고민정
- 양적완화
- 성남은혜의강교회
- 픽크루
- 폰폰테스트
- 김영권
- 미국 금리인하
- 금리인하
- 유튜버 김재석
- 홍혜걸
- 이상형 만들기
- 성남 코로나 확진자
- libtins
- 임영규
- 이지혜
- 뭉쳐야 찬다
- 제넥신
- 학교 개학 연기 4월
- 불가피
- 김영권 아내
- 이태원 클라쓰 15회 예고
- 김재석
- 조희연
- Today
- Total
Dork's port
FTZ Level15 Write-up(FTZ Level15 풀이) 본문
안녕하세요.
벌써 15번이네요!
끝이보입니다!!!!!
시작해보죠!!
check의 주소에 있는 값과 0xdeadbeef를 비교하여 같다면 자동으로 레벨 16의 쉘을 주는 간단한 문제입니다!
메모리 구조를 봐야하기 때문에 gdb로 해당 프로그램을 실행시켜 줍니다!
이전의 프로그램들은 gdb의 권한을 막아둔 것 같던데 이번 문제부터는 아마 gdb가 가능하도록 해놓은 것 같네요!
이것때문에 삽질을 ㅠㅠ
이전 문제에서 그래 왔듯 함수의 인자값을 넘겨주는 것으로 변수의 주소를 추측해 보도록 하겠습니다.
fgets의 인자로 주는 저 주소는 buf라고 예측할 수 있습니다.
그리고 0xdeadbeef와 비교하는 저 주소의 값은 check라고 예측할 수 있겠군요!
그리고 deadbeef라는 값을 메모리 어딘가에 넣어야하는데..
처음에 생각난 것은 환경변수 였습니다.
그러나 소스코드를 보듯 0xdeadbeef라는 값이 소스코드의 영역, 즉 text영역에 있을 것으로 예상하고 gdb를 이용해 값들을 출력해 보았습니다.
그랬더니 main+32주소에 deadbeef주소가 보이는군요!
주소 계산을 다시해서 Double Word형태로 ㅈ출력해보니 예상대로 저 값이 프로그램 실행 시 메모리 어딘가에 있군요! 저 주소를 check에 덮어 씌워주기만 하면 이번 문제는 끝나겠네요!
따라서 이번 문제는 아래와 같이 명령어를 작성할 수 있습니다.
buf와 check의 주소차이 0x28(40)만큼 의미없는 값(A)를 입력한 후 0xdeadbeef가 있는 주소를 넣어주면..!
쉘이 떨어지는 군요!
id로 확인을 해보니 16레벨로 인식합니다!
그래서 my-pass로 비밀번호를 보니 아래와 같이 출력~
어느정도 진행하니 꾀가 늘어서 그런지 빨리빨리 진행이되네요!
다음문제로 귀 귀 씽!
'Hackerschool FTZ Write-up' 카테고리의 다른 글
FTZ Level17 Write-up(FTZ Level17 풀이) (0) | 2018.03.26 |
---|---|
FTZ Level16 Write-up(FTZ Level16 풀이) (0) | 2018.03.26 |
FTZ Level14 Write-up(FTZ Level14 풀이) (0) | 2018.03.24 |
FTZ Level13 Write-up(FTZ Level13 풀이) (0) | 2018.03.24 |
FTZ Level12 Write-up(FTZ Level12 풀이) (1) | 2018.03.24 |