본문으로 바로가기

printf 부분에 뭔가 깨진다... 

어쨌든 gets에서 얼마나 입력받는지 검사하지 않아서 취약점이 발생한다.


코어파일을 열어보려고 ulmit -c unlimited 명령어로 코어파일이 생성 될 수 있도록 만들어 주었다.

실제로 코어파일이 생성되는것을 알 수 있다.


이렇게 생성된 코어파일로, 버퍼의 시작주소를 알아보자. 노란색으로 표시한 부분이 다음과 같다.

일단은 쉘을 땄다.

이 기법은 NOP sled 라는 기법이다. 말그대로 NOP코드에 shell코드를 썰매를 태우는 것이다. 

NOP코드는 아무것도 안한다는 의미로, ret가 NOP의 어딘가로 변조되었을때, 그대로 놉코드를 따라서 쉘을 실행한다.


안전성을 위해 앞뒤로 NOP코드를 넣어주어서, Exploit은 다음과 같다.


NOP + Shellcode + RET(&buffer) + NOP 




아, 그리고 익스코드를 잘 짜도 익스가 안될때가 가끔 있는데, 스택에 값들이 들어가지 않았기 때문이다. 

코어파일을 한번 더 분석해서 스택에 값이 어떤식으로 들어갔는지 확인해보고, 버퍼의 시작주소를 고쳐주면 된다.


'System Hacking ( pwnable ) > hackerschool FTZ Write-up' 카테고리의 다른 글

[FTZ] level14 ( write - up )  (0) 2019.05.28
[FTZ] level13 ( write - up )  (0) 2019.05.28
[FTZ] level11 ( write - up )  (0) 2019.05.27
[FTZ] level10 ( write - up )  (0) 2019.05.21
[FTZ] level9 ( write - up )  (0) 2019.05.21