YLCTF-Web-404
打开网页
啥也没有
在扫描网站和源码的js文件中找到了线索404.php
跟进查看发现确实是404,但是和正常的404页面好像不太一样
bp抓包得到下一关线索ca.php
跟进查看,一道经典的代码题目
exp
import requests
from bs4 import BeautifulSoup
import math
# 创建一个会话
session = requests.Session()
# 获取网页内容
url = "http://challenge.yuanloo.com:23273/ca.php"
response = session.get(url)
# 检查响应状态
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
pre_content = soup.find('pre').text # 获取 <pre> 标签中的文本
print("获取到的算式:")
print(pre_content)
# 将获取的算式分割成行
expressions = pre_content.strip().split('\n')
# 存储结果的字典
results = {}
# 计算每个算式
for expr in expressions:
expr = expr.replace('$', '').strip() # 移除 $ 符号
if '=' in expr:
var_name = expr.split('=')[0].strip() # 获取变量名
# print(var_name)
expr = expr.split('=')[1].strip() # 只保留等号右侧的表达式
# print(expr)
# 替换为 math 库的函数
expr = expr.replace('log', 'math.log') \
.replace('sqrt', 'math.sqrt') \
.replace('sin', 'math.sin') \
.replace('cos', 'math.cos') \
.replace('tan', 'math.tan') \
.replace('pow', 'math.pow') \
.replace('exp', 'math.exp') \
.replace(';', '') # 去掉分号
# 计算表达式
try:
result = eval(expr, {"math": math, **results})
results[var_name] = result # 存储计算结果
print(f"{var_name} = {result:.2f}") # 保留两位小数
except Exception as e:
print(f"计算失败: {var_name} = {expr},错误信息: {e}")
else:
# 计算没有赋值的表达式
expr = expr.replace(';', '') # 去掉分号
try:
result = eval(expr, {"math": math, **results})
print(f"{expr} = {result:.2f}") # 保留两位小数
except Exception as e:
print(f"计算失败: {expr},错误信息: {e}")
# 提交答案
answer = results.get('answer', None) # 替换为你最后计算的答案
print(results)
if answer is not None:
submit_url = "http://challenge.yuanloo.com:23273/ca.php" # 替换为表单的提交URL
payload = {'user_answer': f"{answer:.2f}"} # 保留两位小数
# 发送POST请求
submit_response = session.post(submit_url, data=payload)
if submit_response.status_code == 200:
print("答案提交成功!")
# 打印返回的内容
print("返回的内容:")
print(submit_response.text) # 打印返回的HTML或文本内容
else:
print(f"答案提交失败,状态码: {submit_response.status_code}")
else:
print(f"请求失败,状态码: {response.status_code}")
然后得到flag,这是一道非常正常的web代码题目
NewStarctf2024-Web-你能在一秒内打出八句英文吗
打开题目
这出的类型都是一样的
import requests
from bs4 import BeautifulSoup
session = requests.Session()
url = "http://eci-2ze420okq7lr1o54c63d.cloudeci1.ichunqiu.com/start"
response = session.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
text_element = soup.find('p', id='text')
if text_element:
value = text_element.get_text()
print(f"{value}")
submit_url = "http://eci-2ze420okq7lr1o54c63d.cloudeci1.ichunqiu.com/submit"
payload = {'user_input': value}
post_response = session.post(submit_url, data=payload)
print(post_response.text)
else:
print(f"{response.status_code}")
总结:
遇到这种类型的题目
1.先获取到网页上的目标内容
2.对获取到的内容进行数据处理
3.寻找提交表单的位置
标签:Web,NewStarctf2024,YLCTF,expr,replace,text,print,response,math From: https://blog.csdn.net/Xin031007/article/details/143450490