분류 전체보기

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..
· CTF/Pwn
nc ctf.j0n9hyun.xyz 3000 gef➤ disas main Dump of assembler code for function main: 0x080484cb : lea ecx,[esp+0x4] 0x080484cf : and esp,0xfffffff0 0x080484d2 : push DWORD PTR [ecx-0x4] 0x080484d5 : push ebp 0x080484d6 : mov ebp,esp 0x080484d8 : push ecx 0x080484d9 : sub esp,0x34 0x080484dc : mov DWORD PTR [ebp-0xc],0x4030201 0x080484e3 : mov eax,ds:0x804a040 0x080484e8 : sub esp,0x4 0x080484eb : ..
· CTF/Pwn
nc ctf.j0n9hyun.xyz 3001 ghidra로 까서 본 main 함수 fgets 함수로 0x85(132)만큼 문자를 받아오고, sup이라는 함수를 실행한다. sup 함수에는 출력함수 puts만 있다. 다른 함수는 쉘 여는 shell 함수가 있다. kali에서 gdb로 본 main 함수 위와 같이 fgets 함수 전에 을 보면 ebp-0x8c에 받아온 문자열이 저장되고, 후에 에서는 eax에 ebp-0xc에 있는 값을 넣어 eax를 호출하는 것을 보니 아마 ebp-0xc에는 sup의 주소가 들어가있을 것이다. 에 bp를 걸고 임의의 값을 넣어 확인해본 결과, main 함수에서 확인한 것과 같이 0xffffd24c [ebp-0x8c]에 입력값이 저장되고, ghidra와 gdb info funct..
문제 주어진 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..
기넌
'분류 전체보기' 카테고리의 글 목록 (8 Page)