WARGAME/misc

[dream hack] baby-linux

lucykorea414 2023. 5. 30. 21:15
728x90

참 재밌는 문제입미다

웹사이트를 실행해보면요

요렇게 생겼습니다

그럼 이제 python 파일을 한번 볼게여

이 코드를 한번 분석해 봅시다.

user_input = request.form.get('user_input') cmd = f'echo $({user_input})'

우선 요 부분을 보면 웹페이지에서 볼 수 있는 text 입력 칸이 user_input이라는 변수로 받게 되고 cmd라는 변수에 저장됩니다.

if 'flag' in cmd: return render_template('index.html', result='No!')

그리고 만약 우리가 입력한 값에 'flag'라는 철자가 들어가게 된다면 무조건 No!를 출력하도록 되어있는 걸 볼 수 있습니다.

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

그리고 만약 flag가 포함되지 않았다면 정상적으로 입력되어진 명령어를 실행하고 result로 utf-8로 인코딩 되어 있는 것을 html로 넘겨주는 모습을 볼 수 있습니다. 이때 이 result가 웹사이트에서 밑에 표시되는 텍스트이겠죠

그럼 한번 실험을 해봅시다.

당연히 flag 라고 치면 No! 라고 하는 모습을 볼 수 있습니다

그렇다면 ls를 해서 파일을 한번 봅시다

ls 로 쳤을 때 이렇게 보이죠? hint.txt를 한번 읽어볼게여 (cat 사용)

hint.txt의 내용입니다. 이 힌트의 내용대로 ./dream/hack/hello에 ls 명령어를 쳐 봅시다.

flag.txt가 있군요...

이제 이걸 읽을라면 원래는 cat ./dream/hack/hello/flag.txt를 하면 되지만 우리는 flag라는 단어를 쓰면 안되죠? 그래서 저는 -exec 라는 리눅스 명령어를 통해 flag를 쓰지 않고 cat를 할 수 있는 방법을 생각했습니당.

그러면 명령어로 find ./dream/hack/hello/*.txt -exec cat {} \; 를 해서 find로 찾은 txt 파일을 그대로 cat 할 수 있게 했습니당

이렇게 flag 값이 잘 나오는걸 볼 수 있습니다 ! ^__^

+ 추가) 사실 찾아보니깐 그냥 cat ./dream/hack/hello/*.txt 만 해도 나온다는 사실.....^^...

728x90

'WARGAME > misc' 카테고리의 다른 글

[dreamhack] set-int  (0) 2023.09.29
[dreamhack] 64se64  (0) 2023.06.29