Mis
签到
题目附件:
27880
30693
25915
21892
38450
23454
39564
23460
21457
36865
112
108
98
99
116
102
33719
21462
21069
27573
102
108
97
103
20851
27880
79
110
101
45
70
111
120
23433
20840
22242
38431
22238
22797
112
108
98
99
116
102
33719
21462
21518
27573
102
108
97
103
使用脚本将ASCII字符转换为文本字符串
参考博客:pythonascii转换脚本
ascii_text = '''
27880
30693
25915
21892
38450
23454
39564
23460
21457
36865
112
108
98
99
116
102
33719
21462
21069
27573
102
108
97
103
20851
27880
79
110
101
45
70
111
120
23433
20840
22242
38431
22238
22797
112
108
98
99
116
102
33719
21462
21518
27573
102
108
97
103
'''
text = ""
ascii_codes = ascii_text.strip().split()
for ascii_code in ascii_codes:
char = chr(int(ascii_code))
text += char
print("转换结果:", text)
flag:
flag{TreJaiuLT1rgbdfG0Eay}
Web
Web-签到
打开题目显示签到题
题目附件代码内容:
from flask import Flask, request, jsonify
import requests
from flag import flag # 假设从 flag.py 文件中导入了 flag 函数
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def getinfo():
url = request.args.get('url')
if url:
# 请求url
response = requests.get(url)
content = response.text
print(content)
if "paluctf" in content:
return flag
else:
return content
else:
response = {
'message': 200, # 这里是数值,不是字符串
'data': "Come sign in and get the flag!"
}
return jsonify(response)
@app.route('/flag', methods=['GET', 'POST'])
def flag1():
return "paluctf"
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=80)
这段代码看起来是一个使用 Flask 框架编写的简单的 Web 应用程序。根据代码的结构和提示,我们可以看到以下关键点:
- 应用程序有两个路由:
- ‘/’ 路由用于处理 GET 和 POST 请求,它会检查传入请求的参数中是否包含名为 url 的参数。如果包含了 url 参数,它会使用 requests 库发送一个 GET 请求到指定的 URL,并检查返回的内容是否包含 “paluctf” 字符串。如果包含了该字符串,就返回 flag;否则,返回请求到的内容。
- ‘/flag’ 路由仅用于返回字符串 “paluctf”。
- flag 函数来自于名为 flag.py 的文件,但在提供的代码中并未包含 flag.py 文件的内容。
- 应用程序运行在调试模式下,并监听 0.0.0.0:80。
基于以上信息,需要执行以下步骤来解决这道 CTF 题目:
首先访问一下[http://localhost:13382/flag](http://localhost:13382/flag)
发现显示了paluctf
那么我们直接传参url=[http://localhost:13382/flag](http://localhost:13382/flag)
不就满足了这段代码吗?
def getinfo():
url = request.args.get('url')
if url:
# 请求url
response = requests.get(url)
content = response.text
print(content)
if "paluctf" in content:
return flag
传入的网页内容里面包含paluctf
的话就显示flag
发现报错,再分析一下代码
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=80)
是在80端口,那么我们改为80端口试一下
构造URL[http://localhost:13382/?url=http://localhost:80/flag](http://localhost:13382/?url=http://localhost:80/flag)
成功获取flag
Crypto
Crypto-签到
NC上去获得信息
yafu分解N
然后求D
最后求M,获得flag
flag{56cd7679-774f-4f15-8d0a-c8def614ddbf}