pwnable.kr bof 시작!
buffer overflow 취약점이 발생하는 gets() 함수가 보인다. 그리고 key 값이 0xcafebabe 일 경우 쉘을 획득할 수 있다. gdb 를 이용하여 살펴보자.
func() 함수를 보면 0x48 인 72 byte 만큼 변수가 할당되어 있다. 그리고 두 번째 call 인 gets() 함수의 입력 인자인 overflowme 가 들어있는 주소가 ebp-0x2c 인 것을 알 수 있다. 0xcafebabe 와 cmp 하는 key 의 주소가 ebp+0x08 인 것도 확인할 수 있다.
정리해보면 gets() 함수를 통해 key 까지 접근하기 위해서는 0x2c + 0x08 인 52 byte 만큼 값을 넣어줘야 한다. 그 다음 cafebabe 를 넣어주면 쉘을 얻을 수 있을 것이다.
python 코드가 실행되어 overflow 를 발생시키고 cat 을 이용하여 이 후에 입력한 내용이 쉘로 전달될 수 있게 한다. 그 결과, 위와 같이 쉘을 획득하고 flag 파일 내용을 조회할 수 있다.
인증하러 가자.
성공!
'WarGame > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] collision (0) | 2020.05.05 |
---|---|
[pwnable.kr] fd (0) | 2020.05.05 |