튜기's blogggg

LOB succubus -> nightmare

by St1tch


문제를 보면 우선 argv[1]의 44번째  부터 4바이트가 strcpy의 주소와 같아야 한다.

buf의 크기가 ebp-40부터 시작하기 때문에 조건문을 뛰어넘으면 strcpy함수에 의해 main함수의 ret가 strcpy로 덮힌다.

그리고  memset으로 strcpy의 리턴addr이 'AAAA'로 설정된다.


strcpy함수는 특정 주소(&DST)에 특정 주소(&SRC)의 값들을 복사하는 역할을 한다.

따라서, 무조건 strcpy함수가 실행이 되기 때문에 strcpy가 종료되고 ret하는 부분을 쉘코드, RTL등을 이용하여 쉘을 따면 된다.


나는 RTL을 이용하여 문제를 풀었다.

strcpy &DST는 strcpy의 ret부분인 buf+48부분이다.

그리고 RTL payload를 넣을주소가 strcpy의 &SRC에 와야하는데,  

buf의 시작주소에 RTL payload를 넣으면 &SRC = &DST-48이 되므로 브루트포싱을 이용하여 금방 풀 수 있다.




익스플로잇의 구조이다.





나는 스택에 브루트포싱을 할 때 이 코드를 기준으로 보통 작성을 한다.






이번문제의 exploit이다.

위의 스택구조와 동일한 구조의 exploit코드이며, 

addr, 즉 strcpy &DST를 브루트포싱으로 구해서 쉘을 획득했다.






블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기