보안 20

[Pwnable.xyz] UAF

UAF #pwnable.xyz #not UAF #overwrite #heap 배점에 비해 쉬웠던 문제. 핵심만 언급하려한다. 결론적으로 본 문제는 UAF를 이용하지 않아도 된다. UAF로 풀이하는 루트도 있을런지는 모르겠지만 필자는 그냥 overwrite를 이용해서 문제를 풀었다. 바이너리의 기능은 총 5가지이다. 게임을 시작하거나, 저장하거나, 지우거나, 게임이름을 출력하거나, 게임 이름을 수정하거나... 여기서 게임은 단순히 두 숫자를 받아서 xor한 값을 특정 heap영역에 저장하는 행동을 한다. 이 문제의 목표는 win 함수를 실행 시키는 것 같다. 우선 IDA로 보면 바이너리 실행직후, initialize_game 함수를 통해 특정 heap영역과 data영역을 구성한다. 구조는 대략 이러하다. ..

[System32.kr] Warm Up

Warm Up #pwnable #system32.kr #file descriptor 새로운 워게임 사이트를 찾았다! 암호학 위주여서 매우 관심이 간다 ㅎㅎ 첫 단추를 어떤 문제로 풀어볼까 하다가 Warm Up 이라는 pwnable 문제를 찾았다. 파일 디스크립터를 이용하는 문제 같다. 처음에는 파일 디스크립터를 overwrite 하는 종류의 문제인가 했으나 의외로 간단했다. 다만 strip 이 적용된 상태라 glibc 함수들을 일일히 인지하고 복구하는 과정에 약간의 난항이 있다. 우선 위처럼 메뉴가 주어지고 특정 파일을 open하고 읽거나 삭제할 수 있다. 디컴파일 해보니 31337 이라는 숨겨진 커맨드가 있었다. 이 함수는 /home/strange_file/flag 파일내용을 임의의 string 테이블..

[Hack.lu 2019] no_risc_no_future

no_risc_no_future #mips #pwn ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/Hack.lu_2019/pwn/no_risc_no_future제목 그대로 risc 형식의 mips 아키텍쳐로 된 바이너리에 대한 pwnable 문제이다. Ghidra로 열어본 바이너리는 이런 모습이다. 64바이트짜리 배열에 256바이트를 입력할 수 있게 해준다. 그리고 입력한 버퍼를 출력시켜준다. 그리고 Canary 외에는 별다른 보호기법도 걸려있지 않는 것으로 보아, buffer overflow 이후, 쉘코드를 이용하여 쉘을 얻어내면 될 것 같다. 대강 순서는 이러하다. 1. puts 함수를 이용해서 canary를 leak 2...

<보안 study>/CTFs 2019.12.21

[SECCON 2019] Follow me

follow_me #reversing ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/SECCON_2019/rev/follow_me 우리의 숙제는 계산기 프로그램에서 실행했던 기록 중에서도 branch 명령에 대한 기록을 보고, 어떤 공식을 프로그램에 전달했는지 찾는 것이다. 파일은 총 3개, 계산기 프로그램 바이너리와 branch명령에 대한 기록, 그리고 branch명령을 따라가는 추적프로그램에 대한 소스코드를 준다. 필자는 앞의 계산기 프로그램 바이너리와 branch 명령에 대한 기록만 보고 문제를 풀었다. main 함수이다. 바이너리의 사용법과 실제로 계산을 해주는 함수가 들어있다. calculate 함수의 switch문 ..

<보안 study>/CTFs 2019.12.21

[SECCON 2019] Coffee_break

COFFEE_BREAK #crypto #reversing※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/SECCON_2019/crypto/coffee_break 간단히 풀 수 있었던 크립토(?) 라기엔 리버싱에 가까운 문제였다. The program "encrypt.py" gets one string argument and outputs ciphertext. Example: $ python encrypt.py "test_text" gYYpbhlXwuM59PtV1qctnQ== The following text is ciphertext with "encrypt.py". FyRyZNBO2MG6ncd3hEkC/yeYKUseI/CxYoZ..

<보안 study>/CTFs 2019.12.21

[TokyoWesterns 2019] EASY_CRACK_ME

EASY_CRACK_ME #z3 #reversing ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/TokyoWesterns_2019/reverse/easy_crack_me 단순한 Crack Me 유형의 문제입니다. 인자로 플래그를 받는데, 맞지않는 값을 넣으면 incorrect를 출력시켜줍니다. 바이너리를 뜯어보면 알겠지만 플래그 인증과정이 총 8개정도 있고, 모든 조건에 다 맞아야 정확한 플래그로 인지합니다. 첫 번째 조건 플래그길이는 총 39바이트여야하며, TWCTF{ 로 시작하여 } 로 끝나야합니다. 두 번째 조건 우선 0123456789abcdef 의 표본이 될 문자열이 주어집니다. 그리고 반복문으로 순회하면서 인자로 ..

<보안 study>/CTFs 2019.12.21

Ghidra-Server 기관에 직접 계정의뢰하기

GhidraServer Ghidra-Server 지난 게시글에서는 직접 내 컴퓨터에 Ghidra 서버 구성 하는 법을 작성해보았다. https://goseungduk.tistory.com/33 하지만, Ghidra-Server 기관에서는 현재 더 나은 Ghidra-Server를 위해 피드백도 받고 업데이트도 지속적으로 할 목적으로 자체 공식 서버를 파놓았다. 또한 서버 구축이 어렵거나 안정적인 서버를 원하는 단체에게는 이만한 안성맞춤이 없다. 아무래도 이번 게시글은 기술적인 글보다는 Ghidra-Server에 컨택할 수 있는 방법론에 대해 적으려고 한다. https://twitter.com/Ghidra_Server Ghidra-Server Twitter 우선 Ghidra-Server는 이메일 또는 트위터..

Ghidra-Server 환경 구성하기

GhidraServer Ghidra-Server 이번 포스팅은 팀원끼리 함께 리버싱을 할 수 있는 Ghidra-Server를 어떻게 세팅할 수 있는지 방법을 정리해보려 한다. Ghidra-Server가 제공하는 Shared Project는 리버스 엔지니어링을 하면서 처음 보는 개념이라 신기했다. 우리가 보통 여럿이서 대규모 프로젝트(악성코드 분석에서 라던지...)를 한다던지 CTF 문제를 함께 푼다던지.. 할 때 좋을 것 같다. 우선 이 글을 읽을 때 쯤이면 Ghidra는 설치 되어있을 것이라 생각하고 Ghidra 설치에 관한 내용은 생략하겠다. [server.conf] 우선 서버의 바이너리 및 프로젝트들을 담을 repository 경로를 정해주자. 필자는 Ghidra폴더 최상위에 repo라는 폴더를 만..

2020년 1~2월입대 정보보호병 면접후기

2019. 11. 12 대전.충남 지방병무청으로 정보보호병 면접 가다. 조금 늦은 후기. 2019년 10월 29일에 1차 서류 1등(48점) 점수로 통과 후, 11월 12일에 면접을 보게 되었다. 사실상 서류점수가 2차 시험&면접으로 크게 갈리진 않는다고 하나 왠지모르게 긴장이 되는건 어쩔 수 없었다. 면접은 1시 시작이었다. 대전까지는 무궁화호로 딱 2시간... 점심시간까지 고려해서 오전 10시에 출발했으나 긴장도 되고 먹고 탈날 것 같아서 그냥 1시까지 존버했다... :) . . 대전 내려가면서 보이는 풍경들이 참 정겹다 대전역에서 내려서 서대전네거리역까지 가는 방법이 두 가지가 있었는데 전날에 대전역 마을 버스 상황을 보아하니 배차간격이 30분(?) 정도 나는 것을 보고 경악과 동시에 지하철을 타기..

<사는이야기> 2019.11.25

QEMU로 MIPS 구동 환경 구성하기

MIPS를 사용할 일이 생겨서 현재 사용하는 Ubuntu 16.04 LTS 에 QEMU로 가상환경을 조성하기로 하였다. 우선 MIPS를 구동할 QEMU부터 설치하자. sudo apt-get install qemu 이렇게 하면 MIPS 외에도 다른 하드웨어, 플랫폼을 위한 QEMU 구성요소가 설치된다. (상당히 QEMU에서 지원하는 부분이 많다) 이제 QEMU를 설치했으니 구동시킬 커널과 이미지를 받아보자 커널 wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta 이미지 wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qco..

반응형