상세 컨텐츠

본문 제목

20. xavius -> death_knight

Pwnable Write-Up/02.hackerschool L.O.B

by RACC8N 2020. 5. 3. 15:52

본문

death_knight.c 내용이다. 코드를 분석해보면, 6666포트로 연결하여 client로부터 256문자열을 읽어온다. 여기서 buffer의 크기는 40이므로 OverFlow가 발생함을 알 수 있다.

 

리버스 쉘을 이용해서 문제를 풀어보자. 

 

먼저 쉘코드를 만들어 보겠다.

공격자의 IP와 2345 PORT를 지정하여 다음과 같이 쉘코드를 만들었다.

 

이제 death_knight 버퍼를 확인해 보자.

recv 함수의 인자로 256만큼 읽어 오는데, buffer의 크기는 40 임을 알 수 있다.

 

따라서 payload는 BUF [40] + SFP [4] + RET [4] + SHELLCODE 형식이며, RET에 SHELLCODE 실행 주소를 넣으면 되겠다.

 

다만 원격으로 실행하기 때문에 디버깅을 통한 정확한 ret값을 알 수 없어 브루트포스를 통해 ret값을 얻어야 한다.

pwntools를 사용한 exploit 코드는 다음과 같다. 

 

이제 2345 port를 열고 ex.py를 실행시켜보자

 

정상적으로 쉘이 따졌다. 

 

death_knight를 마지막으로 LOB를 다 끝냈다. 

'Pwnable Write-Up > 02.hackerschool L.O.B' 카테고리의 다른 글

00. LOB 문제  (0) 2020.05.03
19. nightmare -> xavius  (0) 2020.03.11
18. succubus -> nightmare  (0) 2020.03.11
17. zombie_assassin -> succubus  (0) 2020.03.11
16. assassin -> zombie_assassin  (0) 2020.03.11

관련글 더보기

댓글 영역