Description
Category: Pwnable
Source: TAMUctf 2019
Points: 469
Author: Jisoon Park(js00n.park)
Description:
nc pwn.tamuctf.com 4323
Difficulty: easy
Write-up
사용자 입력만 받고는 별달리 하는 일이 없는 바이너리가 주어졌다. 하는 일은 없지만, 내가 입력하는 값이 들어갈 버퍼의 주소를 알려주기는 한다.
굳이 스택의 주소를 알려주는 것으로 보아 스택에서 쉘코드를 실행하라가거나 뭐 그런 문제 같다. checksec으로 확인해보자.
역시나 NX가 disable 되어있다. 스택에서 쉘코드 실행이 가능하다는 이야기다.
인터넷에서 간단한 쉘코드를 받아서 쓰도록 하자. i386에서는 ebp+4의 위치에 return address가 있으므로, 여기를 쉘코드의 주소로 덮어써주면 된다.
s 변수의 버퍼 크기는 0x12A 바이트이므로, 쉘코드를 먼저 써주고 나머지 부분은 대충 아무 데이터로 덮어써준다. 그리고 스택 상의 ebp 주소에도 4 바이트 더미 데이터를 써주고 마지막으로 return address 주소에 s 변수의 주소를 써주면 echo() 함수 실행 후에 return 명령이 호출될 때 s 변수 주소에 있는 쉘코드를 수행하게 될것이다.
이대로 동작하도록 exploit를 써주고 실행시키면 flag를 얻을 수 있다.
Flag : gigem{r3m073_fl46_3x3cu710n}