본문 바로가기

System Hacking

[드림핵] ssp_001 풀이 - 티스토리

 

canary 문제이다

 

 

해당 명령어로 적용된 보호기법 확인이 가능하다

 

 

NX도 켜져있으므로 쉘코드 사용불가 -> 문제 내 함수 이용

 

 

 

처음 코드 본 순간 어지러웠다.

 

 

포너블 공부하면서 본 코드 중 제일 길었다

 

 

코드 보고 예상한 스택 상태는 

 

이거였다

 

 

gdb 뜯어본 결과 

 

이런 상태였다

 

 

name이랑 box위치가 다르다..

 

 

*코드분석

: 1. print해주는 부분이 P 입력 했을 때 밖에 없으므로 P 입력 후 카나리 릭 가능

  2. E 입력 시 name의 길이를 사용자가 지정 가능하므로 BOF 발생

  3. get_shell함수 주소를 ret에 덮어 씌우면 끝

 

 

페이로드

:

 

새롭게 알게 된 것들

1. 변수를 선언해줄 경우 canary = b''와 같은 형태로 선언해줌

2. 바이트 코드 형태를 사용하므로 정수 입력 시 str로 변환 하여 보냄 (왜 바이트 코드를 사용하지)

3. 파이썬 반복문 사용하는 법 터득

해당 while 문을 for문으로 변환하면 

for i in range(131, 127, -1): 로 변환 가능

-> i를 132부터 127까지 -1씩 감소 시키며 반복 

   131, 130, 129, 128, 총 네 번 반복

 


느끼점

: 코드 분석을 꼼꼼히 하자

  gdb로 변수들의 위치를 정확히 확인하자