아 퍼듀 프젝 환경구축때문에 씨티엪을 생각보다 못 풀고 있다....ㄷ.ㄷ...
풀이
일단 IDA 돌렸는데, 함수들 중에 vuln, flag, main정도만 봐도 될 것 같다.
main은 별 거 없고, 버퍼를 초기화하고 vuln()함수 콜하고 있다.
vuln는 ..취약해 보이는데.. 뭐 일단 snprintf를 몰라서 찾아봤는데, 복사하는 역할을 해주는 함수였다. $s에 stdin을 받아서 그걸 $format에 복사하고 있는데, 굳이 1024개나 0x400u개나하고 사실 공격할 곳이 printf함수의 got밖에 없어 보였다.
flag는 /bin/sh불러주는 코드니까 printf GOT을 flag로 overwrite 해보았다.!
혹시 몰라서 gdb로도 뒤져봤는데 별 거 없당
vuln에 call마다 브레이크 걸었었는데, 밑에 건 걸 캡처해버렸넹..어쨌든 구간마다 브레이크 걸어서 어셈에서 보이는 $ebp-0x408과 $ebp-0x808을 확인해보았는데, format과 s가 맞았다. 복사도 잘 되는 것 같고..
인풋으로 AAAA %8x %8x %8x %8x를 줬는데,
그 다음 다음에 나오니까 쓰레기는 4바이트 있는 것 같고~ 대충 fsb대로 페이로드를 구성했다.
fsb payload : AAAA타겟주소%8x%(넣고싶은주소10진수-앞의문자개수)c%n
flag 주소는 0x080485b4이고,
printf GOT을 찾고 싶었는데, peda elfsymbol에 안나오길래
위의 pdisas vuln에서 printf PLT 주소로 가보았다. jmp하고 있는 주소로 갔더니 got이 있었다.
printf의 GOT은 0x0804a00c이다.
이 값은 10진수로 134514100인데,
여기서 앞에 써준 16개(AAAA+flag주소4바이트+%8x의8바이트)의 문자를 빼야하니까 -16을 하면 134514084이다.
ㅠㅠ 칼리에 한글 패치를 안했더니...
한글패치 하고 왔다.
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.