본문 바로가기

Wargame, CTF/protostar

stack5

소스코드

입력만 받고 아무것도 없는 코드

쉘을 실행시켜야하는 문제

 

대략 이런 식으로 진행해야한다

ret:system에서 ret는 main문의 ret이고

ret(system)은 system 함수가 실행된 뒤 돌아올 ret이다

 

buffer를 가득 채워 main의 ret를 변조시켜

원래의 ret으로 가려하는 곳이 아니고 system함수로 가게해야한다

그 다음에는 중요한 부분인데 system함수를 실행시키고 돌아올 

ret를 둘 공간이 필요하기 때문에 ret(system)저 부분은 빈공간으로 두고

그 아래에 /bin/sh을 삽입하여야 한다

 

이제 구해야 할 것은

buffer에서 main의 ret까지의 길이

system 함수의 위치

/bin/sh의 위치

 

gdb 분석 내용

system 함수의 위치를 알아내려면 일단 실행해야하기 때문에

main의 첫부분에 bp를 걸고 실행해야한다

system함수의 위치
/bin/sh의 위치

buffer에서 ret까지는 76바이트

 

exploit 코드

payload는 76바이트를 채우고 ret에 system함수주소 삽입

dummy값으로 system함수의 ret이 들어올 수 있게 빈공간 생성

그다음에 /bin/sh의 위치 삽입

interactive는 shell과 통신을 할 수 있게 하는 pwn명령어

exploit 코드 실행

성공

'Wargame, CTF > protostar' 카테고리의 다른 글

stack7  (0) 2019.08.26
stack6  (0) 2019.08.26
stack4  (0) 2019.08.25
stack3  (0) 2019.08.25
stack2  (0) 2019.08.25