본문 바로가기
Security/Pwnable

pwnable.kr [Toddler's Bottle]->[passcode]

by J0DEV 2021. 8. 11.
반응형

[passcode]

 

 

코드를 보면 main -> welcom -> login 순으로 흘러간다.

welcome에서 name[100]에서 입력받은 값을 출력하고

login()에서 2개의 값을 입력받아 출력하는데

 

scanf()를 보면 변수에 &연산자가 없다.

또한 fflush(stdin);가 있다.

 

scanf()의 인자에 &가 없으면 받은 인자를 주소로 인식한다.

 

 

 

96바이트 뒤에 주소를 덮어 씌울수 있다.

 

그렇다면 원하는 곳의 4바이트를 입력할 수 있다.

 

또한 fflush의 got(exit())를 오버라이팅시키고 system(“/bin/cat flag”)로 점프하면된다.

 

 

 

우선 exit주소를 보면 0x0804a018이다.

그리고 system(“/bin/cat flag”)주소를 보면

 

 

0x080485e3이다.

 

페이로드를 작성하면

 

96아무값 + exit + 0x080485e3의 10진수 \n + asdfasdf\n 하면 될듯하다. (scanf라서) 

 

반응형