Pwnable/Pwnable.kr(6)
-
pwnable.kr - 6 - random
#include int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } 오오 드디어 쉬운 문제인가 !! 싶었다. 코드가 너무나도 단순했기에 너무 설레는 마음으로 문제풀기를 시작했다. scanf 를 통해 key 값을 할당 받는다. random 값은 rand(); 함수로 랜덤값을 넣는다. 그렇게 Ke..
2023.02.23 -
pwnable.kr -5- passcode
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); } }..
2023.02.23 -
Pwnable.kr - 4 - flag
문제는 다음과 같다. wget -i http://pwnable.kr/bin/flag wget을 통해 먼저 문제 파일을 다운로드 받았다. 문제를 보면 알 수 있듯 패킹이 되어 있다 나와있다. 대표적인 패킹 방식으로 UPX 패킹이 있는데 확인 절차를 들어가지 않고 바로 upx 툴을 활용하여 언패킹을 시도 해봤다. 언패킹이 되는 것을 확인할 수 있으며 이를통해 upx 방식으로 패킹이 되어있다는 사실을 알 수 있다. 메인함수인데 오른쪽에 대놓고 flag 위치를 알려주는 걸 확인할 수 있다. main 함수에서 어떠한 일이 발생하길래 대놓고 flag를 나타내주는 걸까 싶어서 IDA를 통해 디컴파일을 시켜봤다. ---> 글씨가 너무 작아서 직접 확대 해보자면... { char *dest; // [rsp+8h] [rb..
2023.01.26 -
Pwnable.kr - 3 - bof
문저 문제의 소스코드를 봐보자. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } func 함수에서 문자열 overflowme를 32byte 까지 할당 받을 수 있다 그다음 정수형 변수로 선언받은 key 값이 0xcafebabe 로 같아지면 된다. 대놓고 변수명과 문제 이름에서부터 Buffer ..
2023.01.25 -
Pwnable.kr -2- col
문제의 소스코드는 다음과 같다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i Little Endian 방식 payload = [path, argv] s = p.run(payload) # --> 프로그램 실행 s.interactive() 이를 통해 exploit을 실행하면 flag을 얻을 수 있다. Flag = daddy! I just managed to create a hash collision :)
2023.01.25 -
pwnable.kr - 1 - fd
문제의 소스코드는 다음과 같다. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc LETMEWIN 문자열을 입력하여 buf와 비교하고 1이 출력되어 플래그를 출력할 수 있을 것이다. 그렇게 플래그를 획득 할 수 있다.
2023.01.25