level13 입니다.

 

이번에도 코드를 줬는데요.

strcpy를 보니 버퍼 오버플로우를 하는것 같고, 조건이 하나 추가되었네요.

i != 0x1234567이면 안되는 것 같습니다!

 

cp를 통해 tmp로 옮겨서 gdb로 확인해줬는데요.

처음에 0x418을 만큼 할당받는데,  코드에서는 1024라고 하지만 더미가 24나 존재한다는 것을 계산을 통해 알 수 있었습니다.

그리고 코드를 보니... i가 $ebp 주변으로 이동한 것 같습니다..?

한번 확인해보죠!

 

 

ebp-40부터 50개의 데이터를 가져와봤습니다. 역시 저기 두번째 줄 끝에 0x01234567이 보이네요 ㅎㅎ

저 부분만 적당히 똑같이 두고 ret까지 덮어씌우면 될 것 같습니다.

 

저기가 몇개차이나는지 궁금하네요..

그래서 세보았습니다!

1052개를 넣었을 때 16개 전부터 13개 전까지 들어가 있다는 것을 알 수 있네요.

그러면 0x1234567이 들어가기 전 개수는 1036개가 됩니다.

\x90 *1036 + 0x1234567 + \x90*12 + ret주소

하면 될 것 같네요..ㅎ

 

해봅시다!

저번 문제랑 똑같이 환경변수에 넣어서 진행하겠습니다.

 

이렇게 나오니까..?

 

이렇게 할 수 있게 됩니다!

 

끄읕

+ Recent posts