상세 컨텐츠

본문 제목

[Write-up] Level 13

Pwnable Write-Up/01.hackerschool F.T.Z

by RACC8N 2019. 12. 7. 03:22

본문

HINT : attckme의 소스코드

 

bof 이지만 중간에 i == 0x1234567이어야 한다. 

 

리눅스의 보호기법 중에 Canaries가 있는데 이와 비슷하게 bof를 보호해주는 기법이다.

 

하지만 쉽게 우회 할 수 있다.

 

우선 환경 변수로 저장한 shellcode의 위치를 알아 보자.

 

0xbffffbf8에 위치하고 있다.

 

그 다음 ret 위치와 i의 위치를 확인해 보자.

 

i 위치에서 12바이트 뒤에 ret가 있는 것을 확인 할 수 있다.

 

자 그럼 strcpy 함수 뒤에 break point를 걸어서 i까지의 버퍼의 크기를 구해 보자.

 

0xbfffe780부터 0xbfffeb88 까지 임을 확인할 수 있으며 이 차이는 1036 이다.

 

즉 buf (1032) + i (4) + buf (8) + sfp (4)+ ret (4) 가 된다.

 

i에는 0x1234567,  ret에는 shellcode가 위치한 주소를 넣어주면 쉘을 딸 수 가 있다. 

 

정상적으로 쉘이 실행 되었다.

 

이제 level14로 올라가 보자.

'Pwnable Write-Up > 01.hackerschool F.T.Z' 카테고리의 다른 글

[Write-up] Level 15  (0) 2019.12.07
[Write-up] Level 14  (0) 2019.12.07
[Write-up] Level 12  (0) 2019.12.07
[Write-up] Level 11  (0) 2019.12.06
[Write-up] Level 10  (0) 2019.12.06

관련글 더보기

댓글 영역