Dreamhack/Dreamhack Wargame (Challenge)

[13] IT 비전공자 [dreamhack] baby-linux 문제 풀기

imaginefuture-1 2024. 9. 23. 10:25

응애 리눅스~

 

https://velog.io/@ayg0418/Dreamhack-baby-linux

 

[Dreamhack] baby-linux

풀이일 : 2023/05/24일단 접속 정보로 접속 해본다. 리눅스 터미널로 보이는 화면이 나온다.ls 명령어를 쳐보자.관심을 끄는 hint.txt라는 텍스트 파일이 존재한다. cat 명령어를 이용하여 해당 파일을

velog.io

풀이 참고 블로그

 

13번째 문제 가보자

 

 

문제다
홈페이지에 들어갔더니 echo $ 표시가 떠있다 뭐지 달라를 입력하세요??

 

1000을 입력해도 아무 응답이 없다..

 

블로그 설명대로 ls를 입력해본다

 

현재 디렉토리의 파일 목록을 보는 명령어는 ls(list segments)명령어이다. 

 

 

 

오호 힌트?

cat 명령어를 이용하여 해당 파일을 읽어보자.

 

cat명령어란

 

 

 

flag는 ./dream/hack/hello에 있다고 알려준다

 

 

./dream/hack/hello/flag.txt  하위 경로 폴더를 cat 명령어로 읽기 시도해보았다 no가 뜬다 소스코드를 확인해보자

 

#!/usr/bin/env python3
import subprocess
from flask import Flask, request, render_template

APP = Flask(__name__)

@APP.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        user_input = request.form.get('user_input')
        cmd = f'echo $({user_input})'
        if 'flag' in cmd:
            return render_template('index.html', result='No!')

        try:
            output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5)
            return render_template('index.html', result=output.decode('utf-8'))
        except subprocess.TimeoutExpired:
            return render_template('index.html', result='Timeout')
        except subprocess.CalledProcessError:
            return render_template('index.html', result='Error')

    return render_template('index.html')

if __name__ == '__main__':
    APP.run(host='0.0.0.0', port=8000)

result = 'No!' 가 있다. 즉 cmd 안에 flag가 있으면  no 리턴값이 나온다는 얘기다

 

이 블로그에서는

정규 표현식에서 *는 앞의 문자들이 0번 또는 그 이상 반복된다는 것을 의미한다. 따라서 다음과 같은 명령어를 이용하여 필터링을 우회해 보자. (우회하였다!)

cat ./dream/hack/hello/fl*g.txt

 

 

하하하!!!