응애 리눅스~
https://velog.io/@ayg0418/Dreamhack-baby-linux
풀이 참고 블로그
13번째 문제 가보자
1000을 입력해도 아무 응답이 없다..
블로그 설명대로 ls를 입력해본다
현재 디렉토리의 파일 목록을 보는 명령어는 ls(list segments)명령어이다.
cat 명령어를 이용하여 해당 파일을 읽어보자.
#!/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
하하하!!!
'Dreamhack > Dreamhack Wargame (Challenge)' 카테고리의 다른 글
[14] IT 비전공자 [dreamhack] ex-reg-ex 문제 풀기 (0) | 2024.09.24 |
---|---|
[15] IT 비전공자 [dreamhack] phpreg 문제 풀기 (0) | 2024.09.24 |
[12] IT 비전공자 [dreamhack] shell_basic 문제 풀기 (0) | 2024.09.23 |
[11] IT 비전공자 [dreamhack] pathtraversal 문제 풀기 (0) | 2024.09.23 |
[10] IT 비전공자 [dreamhack] welcome 문제 풀기 (0) | 2024.09.23 |