보안이란게 직업으로 삼는건 별로이긴 한데ㅇㅅㅇ


사실 일반 개발자들도 보안 알면 좋긴하지


요즘 보안에 대한 환상을 가진 사람이 많아서 겸사겸사 찍먹을 해보자ㅇㅅㅇ

그런데 너무 기술적인건 어려우니까ㅇㅅㅇ

코테 글도 좀 올라오는 프갤이니 ctf 문제 중에 코테 냄새나는 문제가 하나 기억나서 해볼거임ㅇㅅㅇ


아 ctf는 대충 해킹 대회인데 문제 안에 flag 라는 특정 문자열을 찾는 거임ㅇㅅㅇ





아래가 문제임ㅇㅅㅇ(웹사이트)




보면 대충 코테 웹 사이트 처럼 보이고


저기 "Run Code"를 클릭하면



이렇게 예제 3개 중에 몇개 통과됐는지 나옴


참고로 3개 다 맞춘다고 플래그를 주진 않음..ㅇㅅㅇ


암튼 우리가 코드를 올리면 서버에서 컴파일과 실행을 할테니


보통 파일로 저장돼 있는 flag 를 얻기 위해 


파일을 읽는 코드를 넣어 출력해야 하는 문제라는걸 알수있음ㅇㅅㅇ




코드를 몇개 실행해보면



이렇게 특정 키워드가 막힌걸 볼수있음


대충

system

exec

open

read

#

...


이렇게 막혀있는걸 확인했는데 


소스코드를 보니 (물론 대회 중에 소스코드를 제공하진 않았음ㅇㅅㅇ)


include

system

exec

open

fscanf

read

fread

fget

getc

asm

pragma

#


이렇게 막혀있더라



파일을 읽는 함수들이 키워드가 막혀 있어서 바로 호출이 불가능함

키워드 막힌걸 우회하기 위해 알아야 할게 두가지 있음




이건 #define 을 이용해서 우회하는거

그런데 #도 막혀있음ㅇㅅㅇ

그래서 필요한게 삼중자


위의 두개를 이용하면


??=define oo fop??=??=en


이렇게 우회하여 fopen 사용이 가능함ㅇㅅㅇ


이제 디렉토리를 뒤져서 flag 가 적힌 파일을 찾고 그 파일을 내용을 읽으면 됨ㅇㅅㅇ




그런데 바로 출력할 수 있는 방법이 없자나?ㅇㅅㅇ


보통 리버스쉘 연결해서 푸는데 네트워크 연결이 안됨 (컨테이너가 분리돼 있음)


따라서 "Run Code" 를 누르면 나오는 결과를 이용해서 한 비트씩 빼와야됨ㅇㅅㅇ


관심있는 사람은 직접 짜보길ㅇㅅㅇ




이 문제는 작년 삼성 SSTF hac/kers playgound 에서 나온 "SW Expert Academy" 문제

이 대회에선 푼 사람이 많을 수록 문제의 점수가 떨어지는 시스템이었는데


Tutorial 문제를 제외하면 가장 많은 사람들이 풀었던 문제였다ㅇㅅㅇ




그 이전 대회 문제들도 깃헙에 해설하고 같이 올라가 있으니 관심있는 사람들은 보셈ㅇㅅㅇ
Hac/kers 사이 / 빼고ㅇㅅㅇ



여기 있는 문제들을 다 풀수있다?


보안전문가ㅆㄱㄴ