FC3-1 gate -> iron_golem

2018. 7. 30. 20:21WarGame/Fedora Core 3&4

첫번째 페도라 문제입니다.

lob15번? 정도를 풀다가 fake ebp에서 멘탈이 나가서 이문제를 풀어봤지만 이문제도 fake ebp라고해서... 체념하고 풀었습니다.


이문제 처음에는 상당히 어렵게 다가와서 (http://lclang.tistory.com/23)님의 블로그를 많이 참조하여 이해했습니다.


FC는 로그인창이 딱히 별게 없어서 소스코드와 함께 띄우도록 하겠습니다:)



얼핏보면 진짜 간단하게 exploit이 가능할거라고 예상하지만 보호기법때문에 힘들어보입니다.

스택에 shellcode를 넣어도 실행권한이 없고, 주소가바뀌어서 거의 불가능합니다.


GOT함수를 조작하기위해 함수의 위치를 발견합시다!



함수의 위치를 발견했으면 함수속으로 들어가봅시다!




got앞부분인 0x00000001로 심볼릭 링크를 걸어주기위해서 쉘코드를 작성합니다.


실행파일을 작성하고



컴파일하고, 



심볼릭링크를 걸어줍니다.



그다음에는 실행시키기 위한 함수를 가져오기위해 execl함수를 찾습니다.



함수를 디스어셈블해보고, ebp의 값변화를 막기위해서 함수프롤로그를 제외한 주소값을 넘겨주어야합니다.


마지막으로 메인에서 버퍼의 값을 알아내기 위해서 disas main을 하면 0x108로 buf는 총 264byte인것을 알 수 있습니다.



buf[264] + sfp(got-8) + ret(execl+3)

그럼 exploit코드를 작성해보면 ./iron_golem `python -c 'print "A"*264 + "\x10\x96\x04\x08" + "\x23\x57\x7a\x00"'`


이 문제를 풀었으니 lob의 fakeebp로 한번 풀어봐야겠습니다!

'WarGame > Fedora Core 3&4' 카테고리의 다른 글

FC3-5 evil_wizard -> dark_stone  (0) 2018.08.03
FC3-4 hell_fire-> evil_wizard  (0) 2018.08.03
FC3-3 dark_eyes -> hell_fire  (0) 2018.08.02
FC3-2 iron_golem -> dark_eyes  (0) 2018.08.02