LAYER7 CTF write up
Welcome to Layer7 CTF
디스코드를 연결하면 다음과 같은 Flag 확인 가능
Flag : LAYER7{10월 9일 한글날 기념 한글 플래그 세종대왕 만세}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Catch Mind If You Can
URL 에 들어가 보면 아래와 같이 사진을 하나 확인 할 수 있습니다.
Decrypt me! 를 눌러보면 다음과 같이 encrypt.png 파일이 있습니다.
사진에 뭔가 그려져 있다는 생각이 들었고 원본 파일.png 와 encrypt.png 파일과 비교하면 Flag 를 찾을 수 있을 것 같습니다.
encrypt.png - 원본 파일.png = flag.png 가 될 거라고 생각 됩니다.
(REV 문제인데.. Forensic 기법으로 풀어버리는.. )
StegSolve.jar 프로그램을 이용하겠습니다.
encrypt.png 파일을 넣고 아래와 같이 Image combiner를 선택해 줍니다.
combiner 에 원본파일.png 파일을 넣으면 아래와 같이 확인 할 수 있습니다.
무언가가 있어 보입니다. 저희는 SUB를 할 것 이므로 SUB로 해보겠습니다.
Flag : LAYER7{N1c3_W0RK_1TS_T1M3_T0_R3ACT!!}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
C jail break revenge(?)
C jail 이라고 합니다.
nc를 실행해 보면 아래와 같습니다.
name 을 입력하면 아래와 같이 나옵니다.
입력할 코드의 line 수를 입력하는 것 같습니다.
일단 10줄이라 하고 확인해 보면 아래와 같습니다.
필터링 되는 값과 구동 방식을 확인 할 수 있는데 일단 쉘을 따야하니.. system 함수가 필요하고 이를 구동할 main 함수가 필요합니다.
문자를 연결 하는 방법을 찾아야 할 것 같습니다.
검색을 하던중 C언어 매크로 #, ## 연산자 라는 포스팅을 보게 되었습니다.
주소 : https://norux.me/22
문자열을 이어 붙일 수 있다고 합니다.
만약 main이 필요하다면 m##a##i##n 이라고 적으면 main이 되는 것 입니다.
제가 생각하는 코드는 아래와 같습니다.
#include <stdio.h>
#define m m##a##i##n
#define s s##y##s##t##e##m
m(){
s("sh");
}
로 6줄이 필요합니다.
ls -l을 입력해 보겠습니다.
shell을 땄습니다.
Flag : LAYER7{Th15_pr0b_n33d_t0_C_13n9ua93_d3f1n3_7r1ck_t0_m3rg3_t0k3n~~~!}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Do you know Android?
파일을 받아보면 .apk 파일이 있습니다.
.apk 파일을 온라인 디컴파일러에 넣으면 파일을 보여줍니다.
주소 : http://www.javadecompilers.com/apk
sources\p001kr\layer7\ctf\yeongyu\layer7\android 를 쭉들어가보면 아래와 같은 java 파일이 존재합니다.
Main3Activity.java 파일에 아래와 같은 코드가 들어 있습니다.
base64 decoder 를 이용해서 확인해 보면 아래와 같습니다.
Flag : LAYER7{good_to_study_android}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ