Pwnable.kr Mistake 풀이, Write Up :: Archan
2020. 3. 31. 15:49
Hacking/[Toddler's Bottle]
Pwnable.kr Mistake 문제로 7개월만에 복귀했습니다. 코로나 때문에 못 나가서 미치겠네요.. 다들 화이팅 합시다 문제에 힌트도 있고 뭐라 말이 많네요? CTF에 참가해보면서 대부분은 문제에서 50%는 먹고 들어가야한다는것을 깨닳았기 때문에 한번 해석해봅시다. This task is based on real event - 실제 일에 기반을 뒀다고 하네요? Thanks to dhmonkey - dhmonkey라는 사람에게 감사한다고 합니다. 쓸데없는 부분이였고 힌트를 봅시다 hint : operator priority - 운영자 우선 순위라는 뜻입니다. 직역이 그렇고 연산자 우선 순위를 의미하는것 같네요. 접속을 해서 코드를 열어보겠습니다. 평소와 같이 C코드네요. 그럼 이 문제를 풀기 위해선 ..
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 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..