CTF/Reversing

Baby's first reversing, I think. Get it to terminate with exit 0 with an input matching the flag format (WPI{foo bar baz}) mhm file mhm 명령어 이용하면 python 3.8 byte-compiled 라고 한다. https://shwoghk14.blogspot.com/2020/05/forensics-pyc-py.html Forensics .pyc 파일 .py로 복구하기 별빛 연구소(StarLight Lab) shwoghk14.blogspot.com 인터넷으로 검색해보니 디코딩 툴이 있어 확장자 .pyc 붙여주고 툴 이용해 python 파일로 변환하고 내용 확인 uncompyle6 mhm.pyc # un..
주어진 adventure 파일을 열어보면 이렇게 긴 설명이랑 입력칸이 뜬다. ghidra로 열어봤다. 저 a> 뒤 입력칸에 look, inventory 같은 명령어를 입력할 수 있는 것 같다. go에 대한 명령어도 있었는데, go 뒤에 north, south 등 방향이 붙어야하고 안붙으면 Gotta be ... 문장이 뜬다. 위에서 west로 가면 Agency Lobby가 있다고 하니 go west를 입력해봤다. 그 뒤로 언급있던 Chief 사무실에 들렀다가 solved stamp를 보고 take, use 명령어를 썼는데 어디에 stamp를 찍냐며 역정을 낸다. 아마 아이템이 나오면 take, drop, use를 이용하면 되는 것 같다. 맨 처음 Dangeresque's Office에서 나온 아이템(미지..
check_password 함수 너무 복잡허다 void check_password(char *param_1) { int iVar1; int iVar2; int iVar3; uint uVar4; int in_GS_OFFSET; char *pcStack88; size_t sStack84; undefined4 uStack80; char acStack77 [13]; char *local_40; int local_3c; int local_38; int local_34; size_t local_30; int local_2c; int local_28; undefined *local_24; uint local_20; uint local_1c; uint local_18; uint local_14; int local_10..
문제 주어진 serial 문자열과 입력받는 enter 문자열과 for문을 도는 i를 이용해 각 자리수에 i%2와 XOR 연산한 값을 비교해 같으면 통과하는 문제이다. 여기서 enter 문자열이 flag라고 추측할 수 있다. A XOR B = C 이면 B XOR C = A 라는 XOR 연산의 특징을 이용해 serial 각 자리수와 i%2 XOR 연산을 진행해 enter 값을 구했다. 위와 같이 파이썬 코드를 작성해 flag 값을 구할 수 있었다. FLAG : HackCTF{hey_success_D0_y0u_kn0w_r3verse_3n9ineer1n9?}
주어진 two.apk 파일을 dex2jar로 디컴파일해서 jd-gui로 확인하니까 이전 droids1 문제와 같이 FlagstaffHill 클래스가 있었고 그 안에 getFlag함수가 있었다. package com.hellocmu.picoctf; import android.content.Context; public class FlagstaffHill { public static String getFlag(String paramString, Context paramContext) { String[] arrayOfString = new String[6]; arrayOfString[0] = "weatherwax"; arrayOfString[1] = "ogg"; arrayOfString[2] = "garlick..
주어진 one.apk 파일을 dex2jar로 디컴파일해서 봤더니 FlagstaffHill라는 클래스가 있었고 안에 getFlag라는 함수가 있었다. 함수 내용을 보니 paramString으로 입력값인 문자열을 받아와 2131427375에 해당하는 문자열을 getString으로 가져와 비교해서 일치하면, 왼쪽의 fenugreek(paramString)을 리턴하고 아니면 NOPE이란 문자열을 리턴한다. 1) 2131427375에 맞는 문자열 찾기 2) 아무 문자열이나 어플에 쳐보니 NOPE이라고 밑에 뜨는 것을 보니, 맞는 문자열을 입력하면 flag가 그 자리에 뜰것같다. 먼저 1)에 대한 것을 찾기 위해 어플이 참조하는 리소스에 대한 정보를 res/values/public.xml에서 찾을 수 있었다. de..
Where do droid logs go. Check out this file. dex2jar 툴을 써서 디컴파일하고 jd-gui로 열어 본 MainActivity 위 코드를 보면 버튼을 클릭하면 text_bottom, 아마 아래쪽에 flag를 보여주는 형식인것 같다. FlagstaffHill.class를 따라가보면 paprika라는 함수에 input값을 넣어 Log.i()로 로그를 남기며, "Not Today"를 return한다. 어플을 다운받아 실행해보면 밑에와 같은 창이 뜨고 어떤 값을 입력하면 "Not Today"라고 뜬다. 어플에서 직접 flag를 구할 수 있을 것같진 않고, 위에서 Log.i()를 통해 로그를 남긴다고 했으니 adb logcat을 이용해 로그 내역 중 PICO가 들어간 내용만 ..
Yay reversing! Relevant files: otp flag.txt otp 파일을 ghidra로 까서 본 main 함수 undefined8 main(int param_1,undefined8 *param_2) { char cVar1; byte bVar2; int iVar3; undefined8 uVar4; long in_FS_OFFSET; int local_f0; int local_ec; char local_e8 [100]; undefined local_84; char local_78 [104]; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); if (param_1 < 2) { printf("USAGE: %s [KEY]\n",*param_2..
기넌
'CTF/Reversing' 카테고리의 글 목록