Pwnable.kr leg 풀이, Write Up :: Archan
2019. 8. 30. 20:56
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 8번째 문제인 leg입니다. 문제를 눌러보니 문제의 ssh 주소와 두개의 다운로드 링크가 있네요 #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push{r6}\n" "addr6, pc, $1\n" "bxr6\n" ".code 16\n" "movr3, pc\n" "addr3, $0x4\n" "push{r3}\n" "pop{pc}\n" ".code32\n" "pop{r6}\n" ); } int key3(){ asm("mov r3, lr\n"); } int main(){ int key=0; printf("Daddy has very strong arm! : "); scanf("..
Pwnable.kr Input 풀이, Write Up :: Archan
2019. 8. 29. 20:28
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 7번째 문제인 input입니다. C코드 파일이 있으니 한번 뜯어 보도록 하겠습니다. #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know how to give input to program\n"); printf("Just give me correct inputs then you will get the flag :)\n"); // argv if(argc != 100) return 0; if(strcmp(argv['A'],"\x..
Pwnable.kr random 풀이, Write Up :: Archan
2019. 8. 29. 19:51
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 6번째 문제인 random 입니다. 바로 파일 확인하고 C코드 해석해보겠습니다. #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; } 분명 random코드지만 헤더 이 포함 되어 있지 않고 seed값도 들어있지 않기 때문에 r..
Pwnable.kr PassCode 풀이, Write Up :: Archan
2019. 8. 28. 15:36
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 5번째 문제인 passcode입니다. 바로 어떤 파일들이 있는지 확인해보겠습니다. #include #include 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){ ..
Pwnable.kr Flag 풀이, Write Up :: Archan
2019. 8. 26. 20:36
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 4번째 문제인 Flag입니다. 문제를 풀려고 눌러보니 주소는 없고 왠 링크 하나가 저를 반겨주는군요. 링크에 접속해보니 flag라는 파일을 다운로드 받았습니다. 이번 문제는 리버싱 부분이라고 하는군요 바로 IDA에 때려 박아보도록 하겠습니다. IDA를 이용하여 분석을 시도하였지만 분석을 제대로 완료하지 못했습니다. String windows를 이용해서 보니 upx 패킹이 되어있는 것을 알 수 있습니다. 리눅스 terminal에서 upx 언패킹을 해줍시다. upx -d 명령어를 이용해 언패킹 시킨 파일을 재분석 해보겠습니다. Strings Windows의 첫번째 줄에 형광펜으로 쳐 놓은 줄이 바로 Flag입니다!!!!! FLAG: UPX...? sou..
Pwnable.kr Bof 풀이, Write UP :: Archan
2019. 8. 26. 20:06
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 세번째 문제인 bof입니다. 다른 문제들이 ssh접속 방식이였더것과는 달리 nc접속 방식입니다. 또한 다운로드를 받을 수 있는 링크가 두개 있네요. #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; } 한 파일은 그저 파일 형태여서 따로 얻을것..
Pwnable.kr collision 풀이, Write Up :: Archan
2019. 8. 23. 00:05
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 두번째 문제인 collision입니다. col의 C코드 파일이 있네요, 한번 읽어보겠습니다. #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
Pwnable.kr FD 풀이, Write Up :: Archan
2019. 8. 22. 20:38
Hacking/[Toddler's Bottle]
Pwnable.kr [Toddler's Bottle]의 첫번째 문제인 FD입니다. ls -l명령어를 이용하여 뭐가 있는지 확인해보겠습니다. cat 명령어를 이용하여 어떤 코드인지 살펴봅시다. C코드를 보자마자 LETMEWIN과 Flag를 실행시켜주는 코드인 /bin/cat flag가 눈에 띄네요. 어떻게 해야 문제를 풀 수 있는지 C코드를 해석해 봅시다. read함수를 보면 인자값중 첫번째로 fd를 입력 받습니다. fd의 값에는 0x1234가 들어가야 합니다. 그럼 0x1234를 정수로 바꿔줍시다, 4660이네요. ./fd 4660을 입력하면 공백이 나오게 됩니다. 정답을 호출시키는 명령어인 LETMEWIN을 입력하면 flag를 얻을 수 있습니다. FLAG : mommy! I think I know wh..