ii4gsp

Pwnable.kr - passcode 본문

시스템 해킹/pwnable.kr

Pwnable.kr - passcode

ii4gsp 2020. 2. 4. 13:36

 

 

 

 

ssh서버에 접속해주고 passcode파일의 소스코드를 보자.

 

 

 

 

login() 함수를 보면 변수 passcode1, passcode2가 있다.

scanf()함수를 통해 입력을 받는데 일반적으로 scanf()를 사용할때 scanf("%d", &passcode1);형태일것 이다.

하지만 scanf("%d", passcode1); &가 빠져있다.

passcode1이라는 변수에 값을 저장하는게 아니라 passcode1이라는 변수 안에 있는 값의 주소에 입력값을 넣는다.
scanf()함수를통해 원하는 주소의 값을 입력한다면 passcode를 조작할 수 있다.
welcome()함수에서는 name변수에 100byte를 할당한다.
scanf()함수로 100byte만큼만 입력을 받는다.

 

 

 

 

<welcome+38>부분을 보면 name변수는 ebp-0x70부터 할당된다.

 

 

 

 

<login+24>부분을 보면 passcode1는 ebp-0x10부터 할당 되고

<login+70>부분을 보면 passcode2는 ebp-0xc부터 할당 된다.

welcome()함수의 name변수는 0x70부터 입력을 받는다.

 

 

 

 

name 100byte를 입력받을때 마지막 4byte로 passcode1을 조작 할 수 있다.

welcome()함수에서 scanf()함수로 96byte를 채워주고 4byte를 조작해주면된다.

 

 

 

fflush의 got를 구해주자.

fflush의 got는 0x804a004이다.

 

 

 

 

0x080485e3의 주소에는 "/bin/cat flag"가 들어있다.

 

 

 

 

scanf()함수는 %d로 입력을 받기때문에 0x080485e3을 10진 정수로 입력해주면 된다.

 

 

 

 

Flag: Sorry mom.. I got confused about scanf usage :(

 

payload

(python -c 'print "\x90" * 96 + "\x04\xa0\x04\x08"';cat) | ./passcode

134517147

'시스템 해킹 > pwnable.kr' 카테고리의 다른 글

Pwnable.kr - random  (0) 2020.02.04
Pwnable.kr - flag  (0) 2020.02.04
Pwnable.kr - bof  (0) 2020.02.04
Pwnable.kr - collision  (0) 2020.02.04
Pwnable.kr - fd  (0) 2020.02.04
Comments