반응형

CTF/포너블 18

[n00bzCTF] Pwn1 - 포너블 / 버퍼오버플로우 / IDA / Pwndbg / Pwntool

쉬운 난이도의 포너블 문제 간단한 버퍼 오버플로우 문제이다. pwn1 바이너리 파일과 원격 접속 주소가 주어진다. 한번 nc 를 이용해 원격으로 접속해 봤다. Would you like a flag? 라는 문장이 출력되고 사용자 입력을 받는다. 아무렇게나 입력해보니 fake flag 가 출력되었다. IDA 라는 디스어셈블러를 이용해 main 함수를 살펴보았다. 여기서 확인할 수 있는 문제는 배열 s 의 크기가 64 인데 fgets 함수로 80 만큼 입력을 받고 있는 것이다. 선언한 길이보다 더 많은 입력을 받아 버퍼오버플로우 취약점이 발생한다. 버퍼오버플로우를 통해 ret 주소를 변경시켜야 한다. 변경시킬 대상 주소는 코드 어디에서도 호출하지 않고 있는 win() 함수이다. win 함수는 system("..

CTF/포너블 2023.06.27

[n00bzCTF] Flag Shop - 포너블

아주아주 간단한 포너블 생기초 문제 포너블 관련 지식이 없어도, 잔머리가 조금 있다면 풀 수 있다. 문제에선 바이너리나 소스코드가 주어지지 않고 원격 접속 가능한 주소만 주어진다. nc 를 이용해 이렇게 접속하면 flag shop 이라는 곳으로 연결된다. real flag 는 1337 달러, fake flag 는 50 달러에 팔고있는데 [3] Check account balance 를 선택해 잔고를 보면 수중에 100 달러밖에 없는것을 볼 수 있다. 일단 살 수 있는 fake flag 를 한번 사봤다. [2] Buy fake flag 를 선택하니 How many? 라며 구매 수량을 물어본다. 1 을 선택하니 n00bz{f4k3_flag} 라며 가짜 플래그가 출력되고 잔고를 확인해보니 50 달러가 줄어 5..

CTF/포너블 2023.06.23

[Tenable CTF] One Byte at a Time - 포너블 / XOR

간단한 포너블 문제 풀이수가 401 이나 되는걸 보니 아주 쉬웠나보다. 별다른 설명없이 원격으로 접속할 수 있는 주소만 주어진다. nc 를 이용해 원격접속을 해보면 [flag]> 라는 프롬포터가 나오면서 사용자의 입력을 받는다. 그럼 사용자의 입력값이 플래그와 어느정도 일치하는지 검증한 후, 입력한 부분까지 일치한다면 플래그의 그 다음글자를 어떤 IPv4 주소의 랜덤한 부분과 XOR 한 결과를 알려준다. 일단 플래그 포맷이 flag{} 라는것을 알고 있기 때문에 맨 먼저 f 부터 입력해봤다. 여러번 반복해서 입력해본 결과 f 를 입력했을때 결과로 나오는 값은 0x1b, 0x6e, 0x7c 세 가지였다. 이 세 값이 f 다음글자인 l 과 XOR을 했을때 나오는 값은 0x77 0x02 0x10 세 가지이다...

CTF/포너블 2023.03.18

[justCTF] MyLittlePwny - 포너블 / Jail Escape

간단한 난이도의 Jail Escape 문제 대회에서는 보이는것 처럼 PWN, MISC 두 카테고리에 동시에 들어가 있는 문제였다. 별도로 파일은 제공되지 않고 nc 명령어를 이용해 원격에서 접속할 수 있도록 해놨다. 원격으로 접속하면 > 프롬포터가 나오면서 사용자의 입력을 받는다. 테스트용으로 hihi 라고 입력해 봤더니 My Little Pony 에 나오는 것 같은 캐릭터가 내가 입력한 말을 그대로 echo 해주었다. 단순히 입력한 말을 그대로 출력해주는데 어떻게 Escape 할 수 있을지 생각해봤다. 방법은 아주 간단했다. ` 기호를 입력하고 그 사이에 명령어를 넣으면 위처럼 명령어가 실행된 결과가 출력된다. 위 사진은 ls 명령어의 실행 결과이다. 중간에 flag 라는 이름의 파일이 보인다. 해당 ..

CTF/포너블 2023.02.13

[2020CCE] Simple Pwn - 포너블 / 버퍼오버플로우 / Pwndbg / Pwntool / IDA

2020년에 진행되었던 국정원 주최 사이버공격방어대회 묵혀놨던 Write Up을 이제야 포스팅 해 본다. 이번에 풀이할 문제는 simple pwn 이라는 포너블 문제이다. 이번 대회에서 가장 쉬웠던 포너블 문제로 스택 버퍼오버플로우 관련된 문제이다. 문제파일로 simple_pwn 이라는 바이너리가 주어진다. 한번 해당 파일을 실행시켜봤다. Welcome. This will help you : 라고하면서 이상한 16진수 값을 던져주고 사용자의 입력을 기다린다. what 이라고 아무단어나 입력해봤더니 그대로 프로그램이 종료되었다. IDA 라는 디스어셈블러를 이용해 바이너리를 열어보았다. main 함수 외에 특별한 함수는 보이지 않는다. main 함수에서는 128바이트 크기의 v4 변수를 선언하는데, gets..

CTF/포너블 2022.11.08

[2020CCE] Simple Cmdshell / Simple Patch - 포너블 / IDA

2020년에 진행된 국정원 주최 사이버공격방어대회 오랫동안 컴퓨터에 당시 문제들을 묵혀놨다가 이제야 풀이 포스팅을 해본다. 당시는 거의 이런 대회에 나가본게 처음이라, 시간에 쫒겨서 캡쳐를 제대로 못한 부분이 많다. 생각보다 쉬운 난이도의 문제가 많아서, 하나씩 포스팅하면 글이 너무 짧아질까봐 쉬운 문제들은 몇개씩 묶어서 포스팅 해보려 한다. Simple Cmdshell 첫번째로 Simple Cmdshell 문제 Jail Escape 와 관련된 문제이다. 바이너리 파일이 하나 주어지고, nc를 이용해 접속할 수 있는 주소가 하나 주어진다. 바이너리 파일을 IDA 라는 디스어셈블러를 이용해 열어보면 위 사진과 같은 main 함수를 볼 수 있다. __isoc99_scanf("%4096s", haystack)..

CTF/포너블 2022.10.24

[IJCTF] Input Checker - 포너블 / 버퍼오버플로우 / IDA / Peda / Pwntool

조금 헷갈렸던 포너블 문제 포너블은 항상 어려운것 같다. 문제설명에서 best input 을 찾으라고 한다. 문제파일로 input 이라는 이름의 바이너리 파일이 하나 주어진다. file 명령어로 확인해보면 ELF 64-bit 파일인것을 확인할 수 있다. ELF 은 리눅스에서 실행가능한 파일이다. 파일을 실행시켜보면 Input : 이라는 문구가 출력되면서 사용자 입력을 기다린다. hello 라고 입력해봤는데, 프로그램이 종료되거나 하지 않고 계속 대기중이었다. IDA 라는 디스어셈블러를 이용해 input 파일을 열어보았다. main 함수를 먼저 살펴봤는데 Input : 이라는 출력이 나온 뒤에 getchar() 함수를 이용해 사용자의 입력을 받고 있다. 반복문이 0에서 1089 까지 돌아가면서 사용자의 입..

CTF/포너블 2022.09.01

[SharkyCTF] Give Away 1 - 포너블 / RTL / IDA / Peda / Pwntool

이전에 포스팅 했던 GIVE AWAY 0 보다 한단계 어려워진 문제이다. (https://hackingstudypad.tistory.com/237) 이전 문제와 차이점은 주어지는 파일을 보면 직관적으로 알 수 있는데 지난번에는 0_give_away 라는 바이너르 파일 하나만 제공되었으나 이번에는 give_away_1 바이너리 파일과, libc-2.27.so 파일이 같이 제공되는것을 볼 수 있다. 여기서 사용되는 기법은 RTL (Return To Libc) 라는 기법으로 ret 부분에 적힌 주소를 libc 영역으로 바꿔 libc 에 들어있는 함수를 불러와 실행하는 것이다. 이전 문제는 win_func 라는 shell을 실행시킬 수 있는 함수가 프로그램 내에 내장되어 있었다면, 이번 문제는 그런 함수가 없이..

CTF/포너블 2022.08.24

[SharkyCTF] GIVE AWAY 0 - 포너블 / 버퍼오버플로우 / PEDA / IDA / Pwntool

오랜만에 풀이해보는 포너블 문제 포너블은 참.. 할수록 어려운것 같다. 문제에서 주어지는것은 0_give_away 바이너리 파일이다. 리눅스에서 file 명령어로 해당 파일을 확인해보면 64비트 ELF 파일인것을 확인할 수 있다. ELF는 리눅스에서 실행가능한 실행파일이다. 한번 프로그램을 실행시켜봤다. ./0_give_away 라고 입력하면 실행이 된다. 실행하면 아무 출력없이 사용자의 입력을 기다리고 있는다. hello 라고 입력해봤더니 그냥 프로그램이 종료되었다. 이번에는 무작정 a 를 많이 입력해봤다. 그랬더니 segmentation fault 가 떴다. 버퍼 오버플로우 공격이 가능할 것 같다. IDA 라는 디스어셈블러를 이용해 바이너리 파일을 살펴보았다. main 함수부터 봤는데 main 함수에..

CTF/포너블 2022.08.19

[ImaginaryCTF] ret2win - 포너블 / 버퍼오버플로우

오랜만에 써보는 포너블 문제 포너블은 왠지 모르게 손이 잘 안가는거 같다.. 어려워서 그런가.. 이번 문제는 간단해서 쉽게 풀었다. 문제파일로 바이너리 파일인 vuln과 소스코드인 vuln.c 파일이 주어진다. 그리고 실제 접속해서 문제를 풀어야 하는 문제서버 주소(ret2win.chal.imaginaryctf.org 1337) 도 같이 주어진다. 우선 어떤 프로그램인지 테스트 해보기 위해 문제 서버에 한번 접속해봤다. 접속하면 Can you overwrite the return address? 라고 하면서 사용자의 입력을 받는다. aaaa 라고 시험삼아 입력해봤는데, 별다른 반응없이 retrun 주소를 출력하면서 프로그램이 종료된다. #include #include int win() { FILE *fp..

CTF/포너블 2022.07.22
반응형