Pwnable.kr Coin1 풀이, Write Up :: Archan
2020. 4. 11. 19:38
Hacking/[Toddler's Bottle]
오늘은 Pwnable.kr coin1을 풀어보겠습니다. 이 문제는 접속 방식이 ssh가 아니라 nc 방식이네요. 한번 접속해보겠습니다. 이렇게 나오고 가만히 기다리다 보니 time expired! bye!라고 뜨면서 세션이 종료가 됩니다. 잘 읽어보니 대충 가짜 동전을 찾아내는 게임인것 같습니다. N은 동전의 수, C는 얼마나 시도 할 수 있는지를 나타내는 수입니다. 진짜 동전은 10의 무게를 가지고 있고 가짜 동전은 9의 무게를 가지고 있습니다. (N)을 보내면 N+1 번째 동전의 무게를 알려줍니다 a,b,c,d,e를 보낸다고 치면 a,b,c,d,e 번째 동전 무게의 합을 알려줍니다. 특정 구간의 합을 알아내 무게가 10의 배수가 안되면 그 구간에 가짜 동전이 있다는 얘기입니다. 전체 동전 구간을 반으..
Pwnable.kr ShellShock 풀이, WriteUp :: Archan
2020. 4. 4. 22:05
Hacking/[Toddler's Bottle]
오늘은 Pwnable.kr ShellShock 문제를 한번 풀어보겠습니다. ssh shellshock@pwnable,kr -p2222로 접속해서 문제를 풀어봅시다. 코드가 상당히 짧아서 살짝 당황했지만? 구글링부터 착실하게 해보겠습니다 ShellShock가 취약점의 이름이란 사실을 발견했습니다. 환경변수에 코드를 삽입해 예상치 못한 행위를 하는 취약점입니다. 테스트로 환경변수를 하나 만들어 봤습니다. 물론 실행은 안됩니다. 그런데 export로 선언한 변수는 subshell에서도 적용이 되는데 이 부분에서 버그가 발생합니다. 서브쉘로 bash를 열고 만든 함수를 실행해보겠습니다. ??? 생각한것과 달리 실행이 되었네요? 서브쉘을 실행시킬때 환경변수 초기화를 하는데 이때 문자열 안에 있는 모든것들을 함수로..
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 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..