일단 문제파일을 아이다로 열어 C로 디컴파일 해보았다.
v4에 문자열을 입력받으면서 s1까지 오버플로우시켜 s1 문자열에 PwnPwnPwnPwnPwnPwnPwnPwn이 들어있게 하는 문제였다.
이번에도 어셈블리어로 정확한 위치를 파악해보도록 하겠다.
v4(var_40) 변수는 ebp와 0x40만큼 떨어진 곳에 위치해있고, s1은 ebp와 0x20만큼 떨어진 곳에 위치해있다.
따라서 우린 32바이트의 dummy값을 넣어주고, Pwn*8을 덧붙여주면 된다.
그럼 s1에 PwnPwnPwnPwnPwnPwnPwnPwn이라는 문자열이 들어가게 될 것이다.
한 번 페이로드를 구성해보자.
이런 식으로 32바이트의 dummy를 보내주고 Pwn*8을 넣어 공격을 시도했다.
한 번 제대로 먹히는지 실행해보자.
익스플로잇에 성공해 쉘이 제대로 따졌고, 플래그도 읽히는 걸 볼 수 있다.
flag : L7{1e977fa2a680f6eb5f2f7919e93ed03c}
'system hacking' 카테고리의 다른 글
Layer7 포너블 2차시 과제 - change_ret64 풀이 (1) | 2022.09.21 |
---|---|
Layer7 포너블 2차시 과제 - change_ret32 풀이 (0) | 2022.09.21 |
Layer7 포너블 2차시 과제 - overwrite_variable32 풀이 (1) | 2022.09.20 |
Layer7 리버싱 1차시 과제 - dreamhack.io basic_exploitation_001 (0) | 2022.09.19 |
Layer7 포너블 1차시 과제 - pwnable.kr bof 문제 풀이 (0) | 2022.09.19 |