해커스쿨 FTZ - 19단계

입력을 받을때 그 입력의 크기를 검사하지 않는 gets()함수를 사용하는것으로 보아 이번에도 BOF문제인것같다.
일단 GDB로 까보자.
sub esp, 0x28은 스택에 40만큼의 영역을 할당한다는 뜻이다. 그리고 보통 RET은 스택 영역 바로 뒤에 있는 SFP바로 뒤에 있다. 그렇기에 쓸모없는값을 44개만큼 체우고, 그 뒤에 셸코드를 넣어야 할거같다.

그런데 이번에는 setreuid가 없기 때문에 setreuid가 있는 셸코드를 구해야한다. 이는 구글링을 통해 구했고, 늘 그랬듯 환경변수에 올려주었다!




이제 페이로드를 짤 차례다.
스택영역과 sfp 영역을 모두 체워야 ret에 접근 할 수 있기때문에, 쓸모없는값을 44개를 넣고, 저 주소를 넣으면 된다!

성공.

Comments

Popular Posts