반응형

CTF/리버싱 41

[2022 화이트햇 콘테스트] 나-1 - 리버싱 / IDA / Pwntool

2022 화이트햇 콘테스트 예선에 출제되었던 문제 이번 문제는 이전 포렌식 문제들과 이어지진 않는다. 가-1, 가-2 문제도 있었으나, 캡쳐를 제대로 하지 못해 나-1 문제에 대해서만 Write up을 작성한다. 문제에서는 secretBox 라는 바이너리 파일이 주어진다. 문제 설명처럼 패스워드 프로그램이다. 해당 바이너리를 IDA로 열어, main 함수의 수도코드를 살펴보았다. 열자마자 눈에 띄는 부분이 있었는데 v3 배열에 대해 특정한 값이 들어있는지 검증하는 부분이었다. 조건문 다음에 main_printFlag 함수가 호출되는걸로 보아 뭔가 플래그와 관련이 있어 보였다. password = [0] * 13 password[0] = 39 password[9] = 80 password[12] = 79 ..

CTF/리버싱 2023.12.14

[2021CCE] Read For Me - 리버싱 / WebAssembly / Burp Suite

WebAssembly 와 관련된 리버싱 문제 어셈블리 리버싱이라고 해서 살짝 쫄았는데 그렇게 어렵지많은 않은 문제였다. 문제 페이지 주소와 함께 의문의 Base64 인코딩된 값이 주어진다. 문제페이지에 접속하면 이런 화면이 나온다. pastebin 처럼 뭔가 간단한 메모를 작성해 서버에 저장할 수 있다. 문서작성 버튼을 누르면 이렇게 해당 문서에 대한 코드를 알려주는데 이 코드는 /load 페이지에 입력해서 내가 작성한 글을 불러올 수 있게하는 코드이다. F12를 눌러 개발자 도구를 보니 code.wasm 파일에 이렇게 WebAssembly 가 써있었다. 내용이 엄청 많고 잘 모르는 분야라 일단 아무데나 브레이크 포인트 걸고 하나씩 넘기면서 보고 있었는데 개발자 도구에서 네트워크 탭을 보고 아까 내용에 ..

CTF/리버싱 2023.08.15

[n00bzCTF] EZrev - 리버싱 / Java

Java 리버싱과 관련된 문제 코드만 천천히 따라가면 그렇게 어렵지 않다. 문제에서 주어지는 파일은 EZrev.class 파일이다. .class 파일은 바로 내용을 확인할 순 없고 디컴파일을 해야한다. http://www.javadecompilers.com/ Java decompiler online www.javadecompilers.com .class 파일을 온라인으로 디컴파일 해주는 사이트가 있다. 해당 사이트에서 파일을 업로드하고 Decompile 버튼을 눌러주면 된다. import java.util.Arrays; // // Decompiled by Procyon v0.5.36 // public class EZrev { public static void main(final String[] array..

CTF/리버싱 2023.07.03

[angstromCTF] zaza - 리버싱 / IDA

간단한 리버싱 문제 제목이 ZAZA 인데 문제를 풀어보고 문제 낸 사람이 혹시 한국사람이 아닐까 생각했다. 원격으로 접속할 수 있는 주소와 바이너리 파일이 함께 주어진다. 바로 IDA라는 디스어셈블러를 이용해 열어봤다. 정의된 함수는 main, xor_, win 세 가지가 있다는 것을 알아냈다. main 함수의 수도코드를 보니 세가지 정도 검증 과정을 거친다는것을 알 수 있었다. 먼저 I'm going to sleep. Count me some sheep: 가 출력되면서 사용자 입력을 받는다. 사용자의 입력값은 v5에 저장되고, 그 값이 4919 인지 확인한다. 맞으면 다음으로 넘어간다. 다음으로 Nice, now reset it. Bet you can't: 가 출력되면서 사용자 입력을 받는다. 이번엔 ..

CTF/리버싱 2023.05.22

[Space Heroes CTF] Galactic Federation - 리버싱 / IDA

이번 CTF의 두번째 리버싱 문제 첫번째 문제보단 어렵지만 차근차근보면 충분히 해결할 수 있다. 문제에서 주어지는 것은 galactic_federation.bin 파일이다. 한번 실행시켜 봤는데 USERNAME 과 PASSWORD 를 입력받는다. 바로 IDA 를 이용해 해당 바이너리를 확인해봤다. 여기있는 함수들이 정의된 함수들인데 login_page() 함수가 보인다. 사용자가 입력한 USERNAME 과 PASSWORD 를 v7, v8 에 저장하고, 해당 값을 obfuscate 에 집어넣는다. 그 결과 값이 각각 hktpu, 8fs7}:f~Y;unS:yfqL;uZ 와 같다면 로그인이 성공하게 된다. obfuscate 함수로 가보니 단순히 입력받은 값에 +7 을 하고 있었다. CyberChef(https..

CTF/리버싱 2023.05.11

[Space Heroes CTF] Acheron - 리버싱 / IDA

beginniner-friendly 난이도의 리버싱 문제 IDA 만 사용할 줄 안다면 쉽게 풀 수 있다. 친절하게 문제 서버에 접속할 수 있는 pwntool 파이썬 코드도 같이 주어진다. 우선 주어진 파이썬 코드로 접속해봤다. 접속하니 적대적인 외계 행성에서 길을 잃었다고 우주선으로 돌아가야 한다고 한다. 그리고 사용자 입력을 받는데 입력값은 N, S, E, W 만 가능하다고 나와있다. 상상해본건데 체스판 같은곳에 내가 있고 동서남북으로 특정한 패턴으로 움직이면 우주선에 도달할 수 있는듯 하다. 입력값에 N, S, E, W 가 아닌 test 라고 입력해봤는데 우주선을 찾지 못했다면서 interactive 가 꺼져버린다. 문제에서 주어진 바이너리 파일인 Acheron 을 IDA 로 열어본다. main 함수..

CTF/리버싱 2023.04.30

[TJCTF] take-a-l - 리버싱 / IDA

쉬운 난이도의 리버싱 문제 IDA 라는 도구를 이용해 간단하게 해결할 수 있다. 문제에서 주어지는 파일은 chall 바이너리 파일이다. 한번 실행시켜 봤는데 What's your flag? 라는 문구가 출력되고 사용자의 입력을 받는다. test 라고 입력했더니 L 이라고 답이 나왔다. 바로 IDA 를 이용해 바이너리 파일을 열어 F5를 눌러 main 함수의 수도코드를 살펴봤다. 사용자의 입력을 받아 s 에 저장하고 flag 배열에 있는 값과 XOR 연산을 한 뒤 그 값이 18 인지 비교하고 있다. 18이면 W 를, 18이 아니는 L 을 출력한다. 문제 설명에 나와있던 I need W 가 이런 의미인가 보다. flag 배열에는 이런 값이 들어있다. 간단하게 18 이랑 XOR 해주면 된다. CyberChef..

CTF/리버싱 2023.04.26

[Tenable CTF] Play Me - 리버싱 / VisualBoyAdvance

Tenable CTF 에서 처음 접해본 게임 리버싱 문제 재밌는 문제였다. game.gb 파일이 문제로 주어지는데 이건 VisualBoyAdvance 를 이용해 실행시킬 수 있다. 실행시키면 이런 화면이 나온다. 슈퍼마리오 같은 간단한 게임이다. 점프해서 장애물을 넘어 오른쪽 끝으로 가면 된다. 순조롭게 진행되다가 이 부분 이후로는 게임을 더이상 진행시킬 수 없다. 마지막에 보이는 발판은 발판이 아니라 그냥 배경그림이다.. 그래서 아무리 점프를 해도 저 발판을 밟을수가 없다. VisualBoyAdvance 의 기능을 이용해 본다. Tools 메뉴에서 Memory viewer 기능을 선택한다. 그럼 게임이 진행되는 동안 메모리 상태를 실시간으로 확인할 수 있다. 주목할 부분은 C0AC, COAE 부분의 값..

CTF/리버싱 2023.04.08

[CTFlearn] Time to Eat - 리버싱 / Python

CTFlearn의 여든 세번째 문제 이번에는 Medium 난이도의 리버싱 문제이다. 문제파일로는 파일이 제공된다. 문제에서 제공되는 코드를 열어보면 이렇게 적혀있다. eat, EaT, eaT, eAT 등 변수나 함수 이름을 상당히 헷갈리게 적어놔서 그냥 봐선 대체 무슨 말인지 알기가 어렵다. 일단 실행시켜봤다. what's the answer 라는 문구가 나오며 사용자 입력을 받는다. hello 라고 입력해 봤더니 bad length 라는 문구가 출력되었다. 사용자 입력값을 eat 에 저장하고 eat 가 9 와 같은지 비교하고 있는데 이 부분이 길이를 체크하는 부분이다. 입력값을 9자리여야 한다. 이번엔 aaaaaaaaa 라고 입력해봤다. bad format 이라면서 입력값의 예시를 출력해준다. 입력값은..

CTF/리버싱 2023.03.31

[Tenable CTF] The only tool you'll ever need - 리버싱 / Strings

아주아주 쉬운 리버싱 문제 사실 너무 쉬워서 리버싱이라 부르기도 좀 그렇다. 문제 풀이수가 얼마나 쉬웠는지 증명해주고 있다. 문제에서 주어지는 것은 a.out 파일이다. 문제 설명을 보면 리버싱 문제를 풀기위한 가장 파워풀한 도구가 뭔지 아냐고 물어보는데 여러 후보들이 있지만 이 문제의 경우 메모장도 그중 하나일것 같다. 메모장으로 a.out 파일을 열어서 스크롤을 조금만 내려보면 플래그가 보인다.. 플래그의 내용에 strings 가 있는걸로 보아 문제 출제자의 의도는 strings 도구를 사용하라는 것인듯 하다. 리눅스 환경에서 strings 명령어를 이용해 a.out 파일을 확인해보면 똑같이 플래그를 찾을 수 있다.

CTF/리버싱 2023.03.22
반응형