[2013 Plaid CTF] ropasaurusrex Write Up :: Archan
2019. 9. 20. 08:35
Hacking/CTF Write Up
2013년도 Plaid CTF에 출제된 문제인 ropasaurusrex 문제 풀이입니다. 일단 어떤 문제인기 파악부터 해봅시다. 우분투에서 checksec명령어를 이용하여 파악해보겠습니다. NX enabled! Nx bit가 활성화 되어있네요. 여기서 Nx bit란? Never execute bit, 프로세서 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU 기술입니다. 즉 지금까지 LOB에서 사용하던 쉘코드를 막 넣는 기법은 사용이 불가능합니다. 또한 , 이 문제는 ASLR 보호기법이 적용되어 출제한 문제이기 때문에 이 점을 참고하였습니다. ASLR과 NX기법이 둘다 활성화 되어있기에 ROP기법을 이용하여 문제를 풀어야겠습니다. 이제 이 파일의 코드를 알아보기 위해 IDA에서 ..
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