pwnable 15

2022 T3N4CI0US CTF Alegeria-BOF Write Up

한국시간 기준으로 2022.3.23 9:00부터 2022.3.25 9:00까지 진행될 2022 T3N4CI0US CTF에 참여했다. 홈페이지 문제로 무려 5시간이 연장되어 25일 14:00까지 진행됐다. 깔끔하게 밤새고 11시부터 금요일 수업을 들으려했으나, 야속하게도 14시까지 꼼짝못하고 컴퓨터 앞에 붙어있었다 ㅠ 각설하고, 가장먼저 요번 CTF의 유일한 Pwnable 문제였던 Algreria-BOF 문제를 풀어보았다. 매우매우 단순한 BOF 문제였다! 코드를 살펴보면 char v4[208] 버퍼에 gets로 길이 검증없이 값을 넣는다! 일단 BOF가 발생하는건 자명한데, RET를 어디로 옮기냐가 문제다. ? 이거 보고 띠용했다. 그냥 뭐 가지고 놀아보자. 아무런 보호기법이 없다. code = b"A"..

CTF 문제 풀기 시작할때 해야하는 것들 정리

1. file 1. 파일 유형 64 / 32 비트 확인 2. 아키텍처(ISA)확인 x86-64 / ARM 3. stripped 여부 확인 => 디버깅 심볼 여부 => main 내가 찾음? 안찾아도 ㄱㅊ? 2. checksec 보호기법확인 3. chmod +x 실행권한없으면 디버깅도 안됨 당연히 permission denied 4. vmmap으로 메모리 영역 권한보기 5. main 찾기 debugging 심볼 없을때 => IDA에서 libc_start_main 따라가며 메인함수주소 찾기 debugging 심볼 있을때 => gdb에서 start

2022 CODEGATE 예선전에 참여하고

해킹을 시작하고 처음 정식으로 참여해본 CODEGATE였다. 일반부의 APT0팀의 pwnable요원?으로 참여하였고 결과는 첫 출전치고 나름 준수했다. 무려 141팀중 32등(1728points 32/141th) 이었다. 26일 저녁부터 27일까지 꼬박새며, 팀원들과 디스코드 채널을 통해 생사를 확인하며 문제를 풀었는데, 거의 전우애가 느껴졌다. 특히 새벽 3시 경에 arvm 디버깅을 위해 arm 환경세팅, captcha 통과하고 드디어 신나는 마음에 함수포인터 설정해주는 녀석을 디버깅하려고 봤는데, 해당 부분까지 도달하기 위해 통과해야되는 로직을 마주하고 거의 패닉에 빠졌다. 그래서 디스코드에 저리 쳐놓고 머리 식힐겸 물 한잔 마시러 다녀왔는데 아래에 이토록 귀엽게 화이팅 표시가 달려있는 걸 보고 포기..

일기 2022.03.06

[2022 CODEGATE] ARVM Write-Up (Pwnable)

2022 CODEGATE 예선전이 2월 26일 오후 7시 - 27일 오후 7시 진행되었다. 처음으로 참여해본 CODEGATE였는데, 팀원들과 나름 준수한 성적을 낸거 같아 개인적으로 참 뿌듯하다. 한 문제라도 잡고 확실하게 풀어보자라는 생각으로 임했는데, 다행히도 한문제는 풀었다. 그렇게 처음보자마자 쭉 붙잡고있었던 문제가 바로 arvm 문제이다. Points : 793 (25 solves) 로 마감했고, 나는 26일 오후 7시부터 바로 시작해 27일 오전 4시~5시경에 풀었던 걸로 기억한다. Welcome! Here is my Emulator. It can use only human. Always SMiLEY :) 우선 arvm 문제의 Description을 보면 다음과 같이 Emulator라고 소개해..

CTF/2022 CODEGATE 2022.03.06

CTF-pwnable용 Docker 설치 및 사용법

https://spark.kro.kr/110 [Docker] CTF-Pwnable 환경 구축하기 Pwnable 환경 구축하기 macOS를 사용하고 있어서 Pwnable을 할때 VMware에 Ubuntu를 설치해서 사용해왔습니다. 하지만, 저는 128GB를 사용하고 있어서 용량이 늘 부족합니다. 그래서 생각한 것이 docker를 이 spark.kro.kr 이 자료를 참고하였다!! CTF 도커 설치하는법 요 링크에서 Dockerfile을 다운받은 뒤에, 이걸로 도커 컨테이너 컴파일을 진행하면된다. Dockerfile안에 컨테이너 안에 설치할 pwnable 관련 여러 도구들을 자동으로 설치해주는 내용이 다들어가 있어서 설치가 매우 간편하다. https://gist.github.com/LiveOverflow/b..

One_gadget Constraints (원가젯 제약조건) 해석하기

one_gadget 툴을 사용하다보면 출력되는 제약조건이 어떤 뜻인지 헷갈릴때가 있다. 아래와 같은 경우 libc-2.31.so 에 존재하는 constraints를 출력시켜보았는데, jun@ubuntu:~/jun/CTF_CONFIG/libc-database$ one_gadget /lib/x86_64-linux-gnu/libc-2.31.so 0xe6c7e execve("/bin/sh", r15, r12) constraints: [r15] == NULL || r15 == NULL [r12] == NULL || r12 == NULL 0xe6c81 execve("/bin/sh", r15, rdx) constraints: [r15] == NULL || r15 == NULL [rdx] == NULL || rdx =..

FSB(Format String Bug) %n %hn %hhn 으로 숫자 입력시 메모리 상태

FSB 문제를 풀때에 한번에 4바이트를 %n을 통해 입력하게되면 너무 많은 값들을 출력하며 TIMEOUT이 발생할 수 있다. 그래서 %hn을 이용해 2바이트씩 나누어서 전송하게 되는데, 이때 기억해두면 좋을 사항들이 있다. %hn을 입력할때. 해당 위치를 기준으로 큰 주소 값으로 입력된다. (ex. $exit_got+0에 입력시 $exit_got+0, $exit_got+1에 입력됨) 리틀엔디안으로의 숫자 입력이니 숫자의 낮은 자릿수 부분이 낮은 주소에 입력된다.

CTF 2022.02.09

[DiceCTF] interview-opportunity

DiceCTF 2022 (dicega.ng) DiceCTF 2022 Win $5,000 in prizes from 🎲 DiceCTF 2022, a cybersecurity competition by DiceGang beginning on Feb 4! Solve cryptography, binary exploitation, reversing, and web challenges. ctf.dicega.ng DiceCTF의 pwnable interview-opportunity 문제를 풀어보았다. 문제파일 분석 문제 바이너리와 libc.so.6 파일을 제공해준다. 나름 친절하다. ida를 이용해 열어보니, 다음과 같이 buf에서 오버플로우가 발생하고 puts로 버퍼의 내용을 출력해준다. 버퍼의 크기를 넘게 입력할..

CTF 2022.02.07
728x90