文章目录
概述
HackTheBox 网站CTF靶场Web相关题目Emdee five for life,题目地址https://app.hackthebox.com/challenges/emdee-five-for-life,主要考察针对Web页面访问与提交数据的脚本开发能力。
题目
题目概述
题目提示为Can you encrypt fast enough?,开启程序实例后,提示访问167.99.202.131:30306
,访问http://167.99.202.131:30306,看到如下Web界面
即题目给出了一个随机字符串,要求获取这个随机字符串并对其md5散列,并将得到的散列值填入输入框提交,但对时间有要求,如果提交的过慢会失效。
题目解答
经过尝试,手工获取后md5处理再提交必然超时,需要使用脚本处理,这里使用Python,主要使用requests、BeautifulSoup、hashlib三个库。
import requests
from bs4 import BeautifulSoup
from hashlib import md5
url = 'http://167.99.202.131:30306/'
with requests.Session() as session:
with session.get(url) as rt:
soup = BeautifulSoup(rt.text, 'html.parser')
target_str = soup.find('h3').text
md5_str = md5(target_str).hexdigest()
args = {'hash': md5_str}
with session.post(url, data=args) as rt2:
print(rt2.content)
- 其中requests库用于通过GET方法访问网站,并通过POST方法提交数据,这里需要注意要保持同一个会话,即随机字符串和hash值维持在同一个会话里,通过
requests.Session()
实现。 - BeautifulSoup解析GET结果并提取随机字符串。
- hashlib用于对随机字符串进行md5散列。
运行脚本,在返回结果中包含flag