본문 바로가기

포너블(pwnable)/CTF(pwnable.kr)13

[Toddler's Bottle] leg 문제풀이 오늘의 문제는 다운로드 파일이 두 개가 주어지고, ssh 링크가 주어진다. wget 명령을 이용해서 leg.c와 leg.asm을 다운로드 받아준다. cat 명령을 사용해 leg.c 파일을 확인해보았다. key1~3() 함수가 있고, main 함수가 있다. main함수부터 살펴보도록 하자! scanf를 사용해 key 값을 입력하고, 그 key값이 key1()+key2()+key3()의 결과와 동일하면, flag 파일이 open 되는 형식이다. cat명령을 사용해 leg.asm 파일을 확인해보니, gdb를 사용해 분석한 내용들이 들어있다. 아마 leg.c의 실행파일을 분석한거겠죠? //leg.c 코드의 key1 함수 부분 int key1(){ asm("mov r3, pc\n"); } //leg.asm 파일의.. 2021. 4. 28.
[Toddler's Bottle] input 문제풀이 오늘의 문제는 뭔소린지 잘 모르겠으니 우선 문제에 접속해보자! 문제에 접속하고 나서, ls 명령을 사용해 디렉터리 안에 어떤 파일들이 있는지 확인해봤다. input.c 파일을 확인해보자! cat 명령을 이용해 input.c 의 내용을 확인해보았다. 지금까지 봤던 문제 중 가장 긴 main함수 인 것 같다...;; 우선 main함수의 첫부분에서 printf문으로 옳은 input을 입력하면, 플래그를 얻을 수 있다는 내용을 출력하고 있다. 각 주석처리 된 부분의 if문들을 통과하고 나면 stage1~5까지를 clear할 수 있다. stage 1~5를 통과해야지만, 마지막의 system("/bin/cat flag")명령을 실행해 flag를 얻을 수 있다. Stage1의 조건(argv)를 확인해보자! 첫번째 i.. 2021. 4. 7.
[Toddler's Bottle] random 문제풀이 오늘의 문제는 random value와 관련되는 것 같다. ssh random@pwnable.kr -pppp(pwd: guest)로 접속을 해준다. cat 명령을 사용해서 random.c 파일의 내용을 확인해보았다. unsigned int random; random=rand(); 랜덤함수를 사용해 만들어진 랜덤값(random value)를 unsigned int 변수 random에 넣어주고 있다. unsigned int key=0; scanf("%d", &key); unsigned int 변수 key에는 scanf를 통해 입력값을 받는다. if(key ^ random) == 0xdeadbeef){ printf("Good!\n"); system("/bin/cat flag"); return 0; } 이렇게 .. 2021. 4. 5.
[Toddler's Bottle] flag 문제풀이와 UPX 설치 오늘의 문제는 리버싱(reversing) 관련한 문제다. wget 명령을 이용해 우분투에 문제 파일을 다운로드 받아준다. 문제에서 리버싱에 대해서 언급했기에 디버거를 실행해 보았지만, 디버깅이 되지 않는다. 때문에 윈도우 환경에서 flag 파일의 구조에 대해서 파악하고자 한다! windows 환경에서 그냥 chrome에 url 치고 flag 파일을 다운로드 받았다. 헥스 에디터인 HxD에 flag 파일을 넣어봤더니 헤더 시그니터에 ELF가 보이고, 아래에 UPX도 눈에 띈다. ELF(Executable and Linkable Format})은 유닉스 계열의 실행파일임을 나타내며, UPX(Ultimate Packer for eXecutables)는 여러 운영 체제에서 수많은 파일 포맷을 지원하는 오픈 소스.. 2021. 3. 27.
[Toddler's Bottle] bof 문제풀이 오늘의 문제는 버퍼 오버플로우(BufferOverFlow) 관련 문제인 것 같다. wget 명령어를 사용해, http://pwnable.kr/bin/bof와 와 http://pwnable.kr/bin/bof.c 파일을 Seed 우분투에 다운로드 받았다. wget 명령어는 Web Get의 약어로, 리눅스에서 웹 상의 파일을 다운로드 받을 때 사용하는 명령어이다. 기본적인 사용법: wget [옵션] [url] ls 명령을 통해 파일이 잘 다운로드 됐는지 확인할 수 있다. bof파일을 실행해보면 permission denied가 뜬다. bof.c 파일을 확인해보자! cat 명령을 이용해 bof.c 파일의 내용을 확인해보았다. main 함수를 먼저 확인해보면, func 함수의 인자값으로 0xdeadbeef를 전.. 2021. 3. 23.
[Toddler's Bottle] collision 문제풀이 오늘의 문제는 위와 같다! 여기서 hash collision(해시 충돌)이라는 단어가 나온다. Hash Collision(해시 충돌)이란, 다른 값을 넣었을 때 같은 값이 나오는 것을 의미한다. 오늘 문제의 핵심은 해시 충돌이다! ssh col@pwnable.kr -p2222를 쳐서 문제에 접속해보자! ls -l 명령을 이용해 현재 디렉터리에 있는 파일의 목록을 봤다. cat 명령을 사용해 flag를 확인해봤지만, 어김없이 Permission denied가 뜬다. col.c 파일의 내용을 보면 위와 같다. main함수 먼저 확인을 해보자! 첫번째 if문에서 인자값의 개수가 2개 미만이면 프로그램이 종료된다는 것을 알 수 있다. 두번째 if문에서는 인자값 argv[1]의 길이가 20byte여야 함을 알 수.. 2021. 3. 20.