forelength

초기 화면에 있는 문장을 읽어보면 /source를 확인해 보라고 한다.

그래서 url에 /source를 넣어서 소스 코드를 확인해 주었다.
코드들을 쭉 보다 보니 전에 풀었던 pingservice와 매우 유사한 문제 같았다.

pingservice와 동일하게 가장 중요한 부분인 /execute를 확인해 보았다.
매우 똑같지만 이번에는 ip가 아닌 cmd를 이용하는 문제였다.
그래서 동일한 방식으로 접근해 보기로 했다.

가장 먼저 ls 명령어를 이용하여 디텍토리에 flag가 있는지 확인하려고 하였으나 아무것도 보이지 않았다...
현재 디렉토리에는 아무것도 없다는 뜻이므로 루트 디렉토리에 있는 파일 목록들을 출력해 보기로 하였다.

루트 디렉토리를 확인해보니 flag가 있는 것을 확인하였다.
그래서 간단하게 cat flag라는 명령어를 사용하여 flag 안에 있는 내용을 출력해 보았다.

cat flag 명령어를 사용해 주니 flag의 내용이 나오는 것이 아니라 no hack ^__________^이 나왔다.
당연히 나올 줄 알았는데 안 나와서 당황하면서 다시 소스 코드를 확인했다.

확인해보니 5글자 이상은 입력할 수 없었다는 것을 알 수 있었다.
그럼 어떻게 5글자 이하로 flag를 볼 수 있을까 고민해보았다.
그러다가 예전에 공부했던 와일드카드를 생각해냈다.
와일드카드의 특징을 이용한다면 짧은 글자 수로 flag를 확인할 수 있지 않을까라는 생각이 들었다.
2023.03.15 - [Web - 이론] - Linux WildCard

리눅스 와일드카드를 어떻게 이용해야 할지 고민하면서 공부하다 보니 알게 된 것이 있다.
'*'라는 와일드 카드는 일치되는 모든 문자열을 찾는 역할을 하는데, 그냥 *만 입력할 시 이전 명령어가 실행되는 것을 확인할 수 있었다.
이를 바로 적용시켜보았다.

파일 내용을 출력해 주는 cat 명령어를 이용하여 명령어를 구성해 보았다.
바로 url에 넣어보기 전에 다른 곳에서 미리 해당 명령어가 잘 동작하는지 테스트해 보았다.
이후 가능하다는 것을 확인하여 url에 넣어보았다.

가장 먼저 cat 명령어를 표준 출력을 이용하여 현재 디렉토리에 저장해주었다.
(표준 출력 리다이렉션 이용)

저장하고 ls 명령어를 실행시켜보면 아무것도 없었던 현재 디렉토리에 cat 저장된 것을 확인할 수 있다.

루트 디렉토리에 flag가 있는 것을 이미 알았기 때문에 루트 디렉토리에 있는 모든 것을 출력하기 위해 cat /*라는 명령어를 생각하였지만, 글자 수 제한에 걸린다.
그렇기 때문에 아까 위에서 와일드카드를 공부하면서 발견한 특성을 사용하여 cat /*를 * /*로 바꿔주었다.
url에 넣어보았더니 flag를 볼 수 있었다.
성공!
seKUCTF{!@N3w_fAC3_@f_W1LD_CArD__!@}
'Web - 실습' 카테고리의 다른 글
forcelogin 2 (0) | 2023.04.05 |
---|---|
forcelogin 1 (0) | 2023.04.02 |
pingservice (0) | 2023.03.21 |
HelloCTF (0) | 2023.03.19 |
NewAPI (0) | 2023.03.15 |