[P4C] pwnable problem writeup1
팀원분들이 직접 제작하신 포너블 문제를 풀어보는 시간이다.
(한수님이 제작하신 문제들에 대한 롸업이다.)
1번 문제)
문제
이름을 입력받고, 멘트를 출력한다.
플래그를 찾아야 될 듯 싶다.
gets() 를 통해 입력을 받는데, bof 가 발생한다.
bof 를 통해서 ret 를 flag() 함수 시작주소로 변경해주면 될 것 같다!
문제 해결 과정
필요한 것들을 구해보자!
버퍼와 ret 간 offset : 108 byte
flag() 시작주소 : 0x8049182
페이로는 다음과 같을 것이다.
"A"*108 + 0x8049182
"A"*108 + 0x8049182
익스플로잇
2번 문제)
이번에도 flag 를 찾아야될 듯 싶다.
3번 문제)
문제
1. getenv 를 통해 "FLAG" 라는 환경 변수 주소를 src(포인터)에 넣는다.
2. strcpy를 통해 dest에 src 를 복사한다. -> 이때 bof 가 터진다.
3. v5 값이 -559038737일 때 getFlag() 함수가 실행된다.
우리 목표는 getFlag() 함수를 실행하는 것으로, bof 를 통해 v5 값을 변경하면 될 것이다.
-> "FLAG" 라는 환경변수를 만들어서 "A"*100 + -559038737 을 등록해주면 될 듯함.
문제 해결 과정
dest 의 위치 : ebp - 116
v5의 위치 : ebp - 16
-> offset : 100 byte
-559038737은 16진수로 0xdeadbeef 이다.
따라서 다음과 같이 환경변수를 등록해주면 된다.