3번째 문제는 bof문제입니다.
FTZ와 LOB를 풀어보신분들은 다 들어보셨을 내용인데요 우선 코드를 먼저 봅시다.
main함수부터 보시면 func함수는 0xdeadbeef네요.
그리고 func함수를 보시면 문자형인 overflowme[32]바이트를 선언하고
print를 통해서 overflow me : 를 출력하네요.
gets라는 함수를 통해서 (overflowme)를 입력받는데 이때 취약점이 발생합니다.
// gets라는 함수는 문자열을 입력받는데 문자열의 개수를 검사하지 않습니다.
key와 0xcafebabe가 같으면 /bin/sh 권한을 얻을수 있네요.
그렇다면 cafebabe의 값을 오버플로우를 이용해서 덮어주면 /bin/sh권한을 얻을 수 있겠죠
그렇다면 overflowme와 key의 거리를 알아야 하는데 gdb를 통해서 확인을 하면
0x2c부터 overflowme가 시작하고 0x8에서 비교를 하기 때문에 두 값사이의 값을 구하면
0x34가 나온다. 이 값을 16진수를 통해서 변환하면 52라는 값이 나옵니다.
(python -c 'print "a"*52+"\xbe\xba\xfe\xca"';cat) | nc pwnable.kr 9000
a값을 52만틈주어서 0xcafebabe까지 값을 채우면 flag를 얻을수 있습니다.
아무것도 안뜬다고 당황하지 마시고 cat flag를 치시면 됩니다. ㅎㅎ
'pwnable.kr 문제풀이' 카테고리의 다른 글
pwnable.kr coin1 문제풀이 :: 건듀의 블로그 (0) | 2019.09.20 |
---|---|
pwnable.kr asm 문제풀이 :: 건듀의 블로그 (0) | 2019.09.18 |
pwnable.kr shellshock 문제풀이 :: 건듀의 블로그 (0) | 2019.09.12 |
pwnable.kr mistake 문제풀이 :: 건듀의 블로그 (0) | 2019.09.07 |
pwnable.kr leg 문제풀이 :: 건듀의 블로그 (0) | 2019.08.30 |