문제상황

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7b167370-bb19-44a3-8b5f-203a17d604f8/_2021-05-21__10.18.17.png

우리가 처음 마주하는 화면은 다음과 같다. MD5 인코딩을 이용한 문제였다.

처음 나도 약간 쉬워보였던 문제라 얼른 인코딩된 string을 넣고 플래그를 얻자고 생각해 인코딩을 했다.

그러나, Too Slow! 가 뜨면서 플래그가 뜨지 않았다.

구조 파악

데체 어떻게 클라이언트와 서버가 동작하는지 궁금해 일단 간단하게 볼 수 있는 프록시를 켰다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/10e204b3-1c37-4412-ada4-27994ad06b45/_2021-05-21__10.24.14.png

프록시에서 POST로 hash라는 키를 웹으로 보낸다는 것을 알게 되었다. 그러면, 사람이 일일히 하는 것보다 파이썬으로 보내버리는게 나을 것 같다.

소스코드

import requests, hashlib
from bs4 import BeautifulSoup

URL = "<http://139.59.173.45:32270>"

def main():
    req = requests.session()
    get = req.get(URL)
    soup = BeautifulSoup(get.content, 'lxml')
    Plain = soup.h3.string
    hash = hashlib.md5(Plain.encode()).hexdigest()
    data = {'hash': hash} 
    res = req.post(URL, data=data)
    print(res.text)

if __name__ == "__main__":
	main()

동작결과 다음과 같이 나왔다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f458eb56-7bbf-4410-bffd-eedb732fbce8/_2021-05-21__10.51.48.png