반응형
[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라서)
반응형
'Security > Pwnable' 카테고리의 다른 글
pwnable.kr [Toddler's Bottle]->[input] (0) | 2021.08.11 |
---|---|
pwnable.kr [Toddler's Bottle]->[random] (0) | 2021.08.11 |
pwnable.kr [Toddler's Bottle]->[flag] (0) | 2021.08.11 |
pwnable.kr [Toddler's Bottle]->[bof] (0) | 2021.08.11 |
pwnable.kr [Toddler's Bottle]->[collision] (0) | 2021.08.11 |