
아무 보호기법이 없는 파일

소스코드를 살펴보면 128바이트의 버퍼가 주어지고
버퍼의 주소를 알려주고
scanf로 141바이트만큼 읽어들이기 때문에 버퍼 오버플로우 공격이 가능하다.
버퍼에 쉘코드를 넣은 후 return address를 버퍼 오버플로우 공격으로 다시 버퍼 주소로 바꿔주면 쉘 코드가 실행이 될 것이다.

payload를 보낸 후에 잘 되었는지 한번 디버깅을 해보자

sendline 전에 pause함수를 넣고 python3로 실행


다른 터미널에서 gdb를 실행 후 attach 명령어와 pid를 이용하여 실행중인 파일에 gdb로 디버깅을 해보자

attach로 붙은 후 breakpoint를 scanf함수 이후 주소로 잡고
** b *main을 하면 error가 발생하는데 왜인지는 더 알아봐야 할 것 같다
c 입력

이게 뜨는데 python 파일을 실행시킨 터미널에서 아무 문자나 입력하면

breakpoint로 이동을 했고 payload또한 잘 전송이 되었을 것이다.

확인을 해보면 잘 전송이 된 것을 볼 수 있다.

ni 이후 stack40을 통해 stack을 확인하면

다음과 같이 26byte만큼의 shellcode 이후 A가 102번, B가 4번 나오고 이후 다시 shellcode가 있는 주소가 return address로 덮인것을 볼 수 있다.
'보안 > DreamHack' 카테고리의 다른 글
| Dreamhack Return to Library (1) | 2024.10.07 |
|---|---|
| Dreamhack ssp_001 (1) | 2024.10.05 |
| Dreamhack Return to Shellcode (0) | 2024.10.03 |
| Dreamhack basic_exploitation_001 (0) | 2024.10.01 |
| Dreamhack shell_basic (0) | 2024.09.26 |