문제상황

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

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

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

구조 파악

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

프록시에서 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()

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