본문 바로가기

보안/DreamHack

Dreamhack basic_exploitation_000

아무 보호기법이 없는 파일

 

소스코드를 살펴보면 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