2016 EKOPARTY Fuckzing reverse

Reversing/리버싱 문제풀이

2016. 10. 31. 00:06



문제바이너리는 pwn의  Fuckzing exploit문제와 완전히 똑같다.

afl fuzzer의 컴파일러로 컴파일 된 리눅스 바이너리이다.


실행을 시키면 libget_flag.so 가 없다고 실행이 되지 않는다.


ldd명령어로 보면 libget_flag.so 를 찾을 수 없다고 적혀있다.





libget_flag.so파일을 임시로 만들고 그 공유라이브러리안에 get_flag함수를 위의 구조에맞게 대충 만들어주면 된다.



나는 대충 이런 코드를 so파일로 만들었다.


gcc -fpic -shared get_flag.c -o libget_flag.so

를 이용해서 so파일을 만든 후

/usr/lib/x86_64-linux-gun/  디렉토리에 임시로 복사해놓으면 에러가 발생하지 않는다.





그래프뷰를 보면 엄청 복잡해보이지만 규칙적인 구조로 되어있다.

입력받은 값의 각 글자에 대해 간단한 연산을 한 후 비교하는 그런 부분이 엄청 많은거 뿐이다. 

사용자 입력은 300바이트를 read함수를 통해 받는다.

문제를 풀어보면 이 300바이트 중에 100바이트만 키값을 비교하는데 사용되고

나머지는 pwn문제에서 페이로드로 사용이 된다.


대회때는 세화가 바이너리를 수정해서 신선한 방법으로 문제를 풀었다

angr로 시도 해보니 angr로도 금방 풀리는문제였다. ㄷㄷ

avoid_list만 잘 해주면 빨리 답이나오는 그런문제였다.