y0u_bat

[FC3] 1. gate -> iron_golem 본문

휴지통

[FC3] 1. gate -> iron_golem

유뱃 2015. 7. 19. 05:53


[FC3] 1. lgate -> iron_golem 


이 페도라3 환경에는  nx, ascii-armor,aslr 보호 기법들이 걸려있다.



nx - 스택을 실행할 권한이 없음

aslr - 스택의 주소값이 실행할때마다 랜덤으로 변함

ascii-armor - lib 주소 맨 앞자리가 00으로 되서 연속으로 호출불가능 






소스를 보자  

lob의 gate문제와 같다.






gdb를 한번 보면 더미가 붙는걸 알수있다.

그리고 스택 주소값이 랜덤으로 실행할때 마다 변하는걸 볼 수 있다.









이문제의 힌트는 fake_ebp이다.  

aslr 때문에 스택 주소값이 랜덤으로 된다.  got 주소 같은경우는 고정되어 있다.

got 주소를 구했다  ( 0849618 )  이다.








rtl를 하기 위해 execl주소를 구한다.

그런데 fake ebp를 하는데 만약 

execl에서 프롤로그 push ebp , mov esp,ebp를 실행되면, fake ebp가 무의미 해진다.

그러므로 프롤로그 다음인  execl+3 (0x007a5723)를 execl로 이용한다.








got주소를 한번 보았다.  

got주소인 저기가 execl의 인자값으로 이용할 구간이다.

우선 execl(path,argv[0],null); 이다

여기서 첫번째가 /bin/sh 실행시키는 파일이여야 되는데  0x0804954c에 해당된다.








그값을 한번 보았다  0x01 값이 들어 있다.

0x01이 쉘을 실행하는 파일을 가르키게 만들면 될거같다.





쉘을 실행시키는 코드를 코딩한다.






컴파일한다음 심볼릭링크를 걸어준다.


현재 페이로드는  264 + got-8 + execl 


got-8로 하는 이유는  ebp 기준으로 인자를 참조하기 때문에 got-8로 하는것이다.








그래서 최종적으로 이런 페이로드가 나온다.










클리어!!













'휴지통' 카테고리의 다른 글

[FC4] 4. dark_stone -> cruel 풀이  (0) 2015.07.26
[FC3] All Clear  (0) 2015.07.24
[FC3] 5. evil_wizard -> dark_stone  (0) 2015.07.24
[FC3] 4. hell_fire -> evil_wizard  (0) 2015.07.24
[FC3] 3. dark_eyes -> hell_fire  (5) 2015.07.24
Comments