상세 컨텐츠

본문 제목

[Write-up] Level 11

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

by RACC8N 2019. 12. 6. 21:12

본문

HINT : attackme의 소스인것 같다

 

strcpy함수는 bof에 취약한 함수이며, argv[1]의 값을 받아서 str로 저장한다.

 

bof로 우리가 원하는 실행을 하도록 ret값을 바꿔주면 되겠다.

 

gdb로 attackme를 까보니 HINT의 코드와 일치한걸 확인 할 수 있다.

 

bof를 하기위해 우선 환경변수에 shellcode를 추가해 보자.

 

잘 추가 되었다. 

 

이제 gdb로 shellcode가 들어간 주소를 확인해 보자.

 

0xbfffffa8 을 보면 환경변수로 추가해준 \x90 + shellcode가 있음을 확인 할 수 있다.

 

이 주소를 잘 기억해 두었다가 bof시 조작할 ret값에 넣어 주면 쉘을 딸 수 있다.

 

자 이제 ret까지의 크기를 확인해 보자.

 

우선 ret에 들어있는 값을 확인해 보면 0x42015574임을 알 수 있다.

 

그런 다음 str에 argv[1]를 strcpy한 다음 주소에 break point 를 걸어 esp부터 ret까지의 값을 확인한다.

 

참고로 argv[1] 값으로 A를 여러개 주었다.

 

0xbfffdb30부터 0x41414141이 들어가는 것을 확인 할 수 있고,

 

0xbfffdc3c에 ret값인 0x42015574가 들어가 있는 것을 확인 할 수 있었다. 

 

자 이제 이 거리를 계산 해보면 

 

( buf  + sfp ) (268) + ret (4) 가 된다.

 

따라서 argv[1]에 A를 268개 넣어주고, 나머지 4바이트에  쉘코드 실행 주소인 0xbfffffa8를 넣어주면 된다.

 

쉘을 따는데 성공하였고 my-pass를 사용하여 level12의 password를 알아내었다.

 

이제 level12로 올라가 보자.

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

[Write-up] Level 13  (0) 2019.12.07
[Write-up] Level 12  (0) 2019.12.07
[Write-up] Level 10  (0) 2019.12.06
[Write-up] Level 9  (0) 2019.12.06
[Write-up] Level 8  (0) 2019.12.06

관련글 더보기

댓글 영역