y0u_bat
[FC3] 1. gate -> iron_golem 본문
[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 |