보호되어 있는 글입니다.
보호되어 있는 글입니다.
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와..
2주동안 열렸었던 picoCTF 2018 에 참여한 뒤 write-up을 쓴다. 나는 리버싱분야의 문제를 혼자서 풀었다. Reversing Warmup 1 - Points: 50 - (Solves: 6075) ida로 열면 바로 플래그가 보인다. flag:picoCTF{welc0m3_t0_r3VeRs1nG} Reversing Warmup 2 dGg0dF93NHNfczFtcEwz를 base64로 decode하면 th4t_w4s_s1mpL3 이다. flag:th4t_w4s_s1mpL3 be-quick-or-be-dead-1 2가지 방법으로 풀었는데 1.ida remote debugging을 이용해서 시간을 비교하는 분기문에 break point를 걸고 f9로 한번에 실행하는 방법과 2.table을 분석해서 ..
이번에도 리버싱 1문제만 잡았지만 2%부족한 플래그로 인해서 정답을 인증하지 못했다.그래서 풀이가 공개되기 전에 플래그가 무엇인지만 알아내고 내가 먼저 write-up을 쓴다. 그래도 이번에는 ctf가 끝날즈음에 단 1명밖에 풀지못한 문제여서 시간이 조금만 더 있었다면 나도 풀 수 있었을거라고 생각한다. main함수에 들어가면 이런게 보인다!! 16진수 배열을 내가 입력한 문자열과 xor해서 나온값이 내가입력한 문자열의 다음인덱스가 아니면 v5를 0으로 만들어서 플래그가 아닌 NOPE을 출력하고 맞으면 내가 입력한 그 값이 플래그이다. 1 2 3 4 5 6 7 8 9 10 11 #include int main() { int encoded[30 ] = { 0x43 ,0x5F ,0x30 ,0x2B ,0x1C..
이문제는 내가 순천향대 정보보호 페스티벌에 나가서 몇시간을 투자했지만 풀지 못했었던 문제이다.하지만 오늘 다른 사람의 wrtie up의 한 부분을 보고 내가 연산실수를 해서 풀지 못하였다는 사실이 아쉬워서 이해한 내용들을 바탕으로 write up을 쓴다. 주의사항: 내가 이해한 방식으로 write up을 작성하였으므로 객관적으로 봤을 때 틀린 부분이 있을 수 있음 함수 401970이 이 프로그램의 main 격인 부분이다. 10번동안 가위 바위 보를 실행하면서 입력을 받은 후에 11번째가 되면 아래 함수들을 실행한다. 함수 4013D0을 보면 이전에 입력했던 4045A4의 값이 해당 문자에 해당하지 않으면 ++v4를 하는것을 볼수 있는데 아래쪽에 v4>0이면 exit하는 것을 볼 수 있다. 나는 v4를 0..