보호되어 있는 글입니다.
부동아리 POSIX 면접에서 출제된 리버싱 문제 풀이들입니다. hard.exe hard.exe는 제가 출제한 문제입니다. 먼저 바이너리를 보니 아무리봐도 배열처럼 생긴 값들이 있군요.일단 'y'버튼을 이용해서 배열로 만들어줍시다. 그리고 이제 아래 루틴을 분석해보면 입력한 문자열의 각 인덱스에 2019를 더한 후에 0x191을 xor한 결과가 배열과 같으면 입력한 문자가 플래그라고 하네요.그렇다면 배열에서 각 인덱스에 0x191을 xor 해준 후에 2019를 빼주면 플래그를 구할 수 있습니다. 123arr=[2466, 2434, 2471, 2437, 2474, 2511, 2524, 2525, 2496, 2522, 2505, 2496, 2515, 2518, 2499, 2515, 2496, 2499, 250..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
rootctf 이후로 블로그에 글을 쓰지 않았는데 이번에 trust ctf에 참여하고 write-up을 써본다. REV 3문제와 MISC 2문제를 풀었다.From z3 import * 로 참여했고 12등이다.MIC CHECK! 일반적인 mic check이다. FLAG: TRUST{Welcome_CTF_Have_FUN!}Easy Taebo'left_jab' : '@==(^0^)@' 'left_mid_jab' : '@=(^0^)@' 'mid_jab' : '@(^0^)@' 'right_mid_jab' : '@(^0^)=@' 'right_jab' : '@(^0^)==@' 'left_hook' : '@(^0^)@==' 'right_hook' : '==@(^0^)@' 'left_speedball' : '@@@(^0..
제 2회 rootctf writeup misc 4문제와 reversing 1문제를 풀고 16등을 하였다. MIC DROP mic check 문제이다플래그: FLAG{M1c..Dr0p..M1c..Dr0p..Welc0me_T0_R00T_CTF_2018!!} HubGIT Github를 이용한 문제로 git reflog와 git reset을 이용해서 플래그가 있었던 시점으로 돌릴수 있다.플래그:FLAG{GIT_8rob1em_7h@t_C4n_b3_50lv3d_in_O63_M1nu7e!} Encoded_Code3글짜씩 인코딩 되어있는것을 이용해서 게싱과 손 브포로 충분히 풀수 있다.플래그:FLAG{B4sE_64_Enc0d1Ng_TT} FindMe! 처음에 파일 다운로드 경로가 잘못되어있어서 그 경로의 pwn을 mi..
시험이 끝난후 친구들과 x-mas ctf에 참여했다.난 Reversing Endless Christmas를 풀었다. 주어진 바이너리를 열면 fileXXXXXX(X에 랜덤한 알파벳이 들어감)라는 형태의 랜덤한 파일에 권한 등을 줘서 생성한 후에 execve를 이용해서 이 프로그램을 종료하고 새로운 프로그램을 실행한다는 사실을 알 수 있다. 여기서 마지막으로 생성된 file56US0D를 ida로 열어보면 이런 루틴이 나온다. buf에 "U @L^vi>n=i>R9;9n=i>R9;9
시험기간에 OtterCTF 라는 ctf에 참여했다. reversing 275점짜리 한문제를 풀었다. 문제를 늦게 잡고 중간에 삽질해서 11번째로 풀었었는데 대회가 끝나고나니 총 25명이 푼 문제이다. binary를 처음 열었을때 방대한 크기의 문자열을 보고 당황했었는데 문자열 중간에 '{' , '}','_'등이 있는것을 보고 아래 연산에 해당하는 인덱스의 문자열을 뽑아서 출력해주면 되겠다고 생각하였다. xmmword_140028f0을 v5에 넣는것이니 v5에는 역순으로 [0x94 ,0x6d,0x38,0x25,0x88 ,0x7e ,0x40 ,0x65 ,0x6b ,0x4c ,0x55 ,0x6e,0x5d ,0x27 ,0x56 ,0x98]로 들어가게 된다.(gdb를 이용해 확인 가능) 그리고 위에 v6은 v5와..
어제 풀었던 랜덤 값 문제와 비슷한 문제를 찾던 중 디미 ctf 2018 mm 문제를 발견했다.디미 ctf 당시에 못 풀고 저장해뒀던 문제라 꼭 다시 풀어보고 싶었다. srand에 seed값으로 0x17A3을 넣고 rand값과 입력값을 연산한 후 memcmp로 unk_201020의 배열들과 비교한다. 이때 이 값들은 0xa8,0x73 -> 0x73a8 로 배열에 들어가게 된다는 사실을 동적 디버깅중 알아냈다. 12345678910111213141516171819202122232425262728293031from ctypes import *import string libc = CDLL('/lib/x86_64-linux-gnu/libc.so.6') table=[0x73a8,0x39cc,0x4e0a,0x8d8..