-
Level19 (nightmare -> xavius)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:47
이번 문제의 키워드는 arg 입니다.
stack영역 사용 불가능, binary 영역 사용 불가능
leave 와 ret로 끝나는 libc 함수도 사용 불가능 합니다.
stack도 RET를 제외하고 모두 초기화를 시킵니다.
또한 취약한함수로 fgets 를 사용하고 stdin 을 사용합니다.
\xbf , \x08 로 시작하는 값은 이용할 수 없기 때문에 stdin 영역이 사용하는 주소가 \xbf, \x08이 아니라면 쉽게 해결할 수 있을 것 같습니다.
먼저 stdin 부분에 break를 걸어서 stdin 중에서 어디에 데이터가 들어가는지 알려가보겠습다.
3번째 push 된 값인 ds:0x08049a3c가 stdin 이라는 것을 알 수 있습니다.
fgets 전과 후를 break 해서 비교해 보도록하겠습니다.
먼저 fgets 를 call 하는 부분인 0x8048729 에 break 를 해서 $esp 를 확인해 보면 잘들어가 있는것을 볼수 있습니다.
stdin 인 0x8049a3c를 확인해 보면 0x401068c0 이 있는 것을 알수 있고, 해당 주소를 한번 확인해 보겠습니다.
위와 같이 들어있는 것을 확인할 수 있습니다.
fgets 를 한뒤에는 어떻게 변할지 확인해 보겠습니다.
0x40015000 ~ 0x4001500a 에 넣어준 값이 들어가 있다고 한다.
해당 값을 이용해서 exploit을 하면 될것 같습니다.
[Dummy 19 byte] + [shellcode 25 byte] + [stdin 주소 (실행파일 RET)]
login : xavius
password : throw me away
'$ 시스템 해킹 $ > Los Of BufferOverflow' 카테고리의 다른 글
Level18 (succubus -> nightmare) (0) 2020.01.01 Level17 (zombie_assassin -> succubus) (0) 2020.01.01 Level16 (assassin -> zombie_assassin) (0) 2020.01.01 Level15 (giant -> assassin) (0) 2020.01.01 Level14 (bugbear -> giant) (0) 2020.01.01