워게임

[pwnable.kr] 3번 문제 - bof 문제 풀이

HackHiJack 2020. 11. 22. 02:31
728x90
반응형

오늘은 pwnable.kr의 3번문제인 bof를 풀어 보겠다.

일단 문제 설명을 보면 bof, bof.c를 다운 받아서 분석한 다음 pwnable.kr 9000에 값을 넣어 flag를 cat하는 방식인 것 같다.

그럼 먼저 링크로 들어가서 파일을 다운 받고, 파일을 해보자.

위 처럼 두개의 파일을 다운받고 터미널을 실행 시켰다.

먼저 ls -l로 파일을 살펴본다.

그리고 bof를 실행해보니 Permission denied 오류가 났다.

그러므로 먼저 cat bof.c로 bof.c를 살펴보자.

결과는 다음과 같다.

일단 살펴보면 0xdeadbeef를 0xcafebabe로 바꿔서 입력하면 해결되는 것 같다.

그리고 gets함수로 overflowme[32]를 입력받는 것 같다.

 

더 자세히 분석하기 위해서 lldb를 이용하여 분석해보았다.

위는 func부분의 디스어셈블한 결과이다.

일단 0x649 <29>부분에 보면 eax에 0x2c(%ebp)가 저장된다.

그리고 key값은 <40>부분에 보면 [ebp+0x8]에 저장되는 걸 알수있습니다.

 

그러므로 거리를 구하면 4바이트의 key값 하고 52를 채워주면 된다.

그걸 python -c하고 nc를 이용해서 밑에와 같이 명령문을 만들었다.

(python -c ‘print “\x41”*52 + “\xbe\xba\xfe\xca”‘;cat) | nc pwnable.kr 9000

flag는 자신이 직접 찾아 보는 것을 권장한다.

728x90
반응형