https://dreamhack.io/wargame/challenges/2/
먼저 실행을 시켜보자!
실행시킬 때마다 버퍼의 위치가 달라진다.
코드를 확인해보니 버퍼는 128바이트고 scanf로 141만큼 입력받을 수 있단다.
그리고 직접 입력해보니 버퍼 출력 후 132개의 문자를 입력하면 아무 반응이 없는데 133개부터 Segmentation fault가 발생했다.
찾아보니 pwntool에서 shell 주소를 제공하는데
Scanf는 \x09, \x0a, \x0b, \x0c, \x0d, \x20를 못 읽어서 25바이트 쉘코드를 사용하지 않는다고 한다.
그러면 26바이트 쉘코드를 사용해야 하는데, 132개 문자 중에 26바이트를 쉘코드로 넣고 나머지 106바이트는 아무 값으로 채워준 후에
실행시킬 때마다 바뀌는 버퍼의 값을 넣어주면 쉘을 얻을 수 있을 것 같다!
실행 때마다 바뀌는 버퍼 값을 받아오는 코드는 처음 작성해보았다!
머리에 잘 남겨둬야지
위 코드를 실행시키면 쉘을 탈취할 수 있고, 이전 문제들과 같이 flag 파일을 열어서 확인하면 된다!
'Pwnable > Dreamhack' 카테고리의 다른 글
[Pwnable] Dreamhack_ basic_exploitation_002 (0) | 2022.08.26 |
---|---|
[Pwnable] Dreamhack_out_of_bound (0) | 2022.08.26 |
[Pwnable] Dreamhack_oneshot (0) | 2022.08.26 |