반응형

리버싱 62

[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

[CTFlearn] Bite-code - 리버싱 / Python

CTFlearn의 아흔한번째 문제 이번엔 Medium 난이도의 리버싱 문제이다. 뒤로갈수록 뭔가 앞쪽에 있던 문제들이랑 난이도 책정 기준이 다른것 같다. 문제 설명을 읽어보면 checkNum 이 true 를 리턴하게 하는 input 이 뭐냐고 물어본다. public static boolean checkNum(int); descriptor: (I)Z flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=3, args_size=1 0: iload_0 1: iconst_3 2: ishl 3: istore_1 4: iload_0 5: ldc #2 // int 525024598 7: ixor 8: istore_2 9: iload_1 10: iload_2 11: ixor 12..

워게임/CTFlearn 2023.05.10

[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

[CTFlearn] Riyadh - 리버싱 / IDA / Pwndbg

CTFlearn 의 아흔번째 문제 이번엔 10점짜리 Easy 난이도 리버싱 문제인데 아무래도 배점이 잘못된것 같다. 막 어렵진 않지만 그래도 10점은 아닌듯.. 일단 문제에서 주어지는 것은 readme, Riyadh, source.zip.enc 파일이다. 나머진 필요없고 문제풀때는 Riyadh 파일만 있으면 된다. 바로 IDA 로 열어서 F5를 눌러 main 함수의 수도코드를 살펴보았다. 일단 세가지 정도를 검증하고 있다. argc 가 1인지, buffer 와 v4 가 같은지, strlen 이 30 인지 세 가지를 비교하고 그거에 따라 각각 Msg2, Msg4, Msg5 가 실행된다. Msg 함수는 1 부터 7 까지 있는데 각각의 Msg 함수들을 보면 이렇게 xormask 값과 어떤 값을 XOR 하는것으..

워게임/CTFlearn 2023.04.27

[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

[HackTheBox] Impossible Password - 리버싱 / IDA

HackTheBox 에서 제공하는 쉬운 난이도의 리버싱 문제 간단하게 풀 수 있다. 문제에서 주어지는 파일은 impossible_password.bin 파일이다. 리버싱 문제이니 고민하지 않고 바로 IDA 로 열어보았다. main 함수에서 f5를 눌러 수도코드를 살펴보니 * 을 출력한 뒤에 사용자 입력을 받는데 그 값이 SuberSeKretKey 일 경우 다음으로 넘어가게 되어있다. 그리고나서 ** 을 출력하고 또 입력을 받는데 이번엔 그 값이 v3 의 값과 같아야 한다. v3 는 sub_40078D 의 수행결과가 저장되는데 sub_40078D 를 들어가 봤더니 시간을 시드값으로 해서 랜덤한 값을 생성하고 그 값의 % 94 + 33 을 계산해 V3 에 집어넣고 있었다. 사실상 이걸 알아내는건 불가능하다...

[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
반응형