当前位置: 首页 > backend >正文

CTF--秋名山车神

一、原网页:

二、步骤:

1.尝试用计算器计算:

计算器溢出,无法正常计算

 

2.使用python计算:

得出计算结果为:1864710043732437134701060769

 

3.多次刷新页面:

发现变量为value,要用post方式给变量传参

那么value=1864710043732437134701060769

 

4.向URL传参

没有返回flag,且每次刷新页面,数学表达式都在变化

用python计算后,发现计算结果都不相同:

得出结论:我们必须按照提示,在2秒之内计算出结果并传参给URL才能返回flag,否则页面会重新生成新的数学表达式,而我们提交的值无效。

 

5.编写脚本:

 

(还有一种方法是修改cookie的timeout让页面暂停,后续再补充这种方法)

 

三、脚本分析:

1.脚本: 

import requests
import reurl = '''http://117.72.52.127:15092'''
s = requests.session()
retuen = s.get(url)equation = re.search(r'(\d+[+\-*])+(\d+)', retuen.text).group()
result = eval(equation)key = {'value': result}
flag = s.post(url, data=key)print(flag.text)

2.分析:

import requests 
# 导入requsets库
# requests是一个用于发送HTTP请求的库,可以轻松地发送GET、POST等请求import re  
# 导入re库
# re是正则表达式模块,用于在字符串中查找模式用于正则表达式匹配url = '''http://117.72.52.127:15092''' 
# 定义目标服务器的URL,表示你要访问的地址s = requests.session()
# 创建一个会话对象s,会话对象可以保持某些参数(如cookies)在多个请求之间共享
# 这对于需要模拟登录或保持会话的场景非常有用。retuen = s.get(url)
# 使用会话对象发送GET请求到目标URL,并获取响应equation = re.search(r'(\d+[+\-*])+(\d+)', retuen.text).group()
# 使用正则表达式从响应的HTML内容中搜索一个数学表达式
# 正则表达式 r'(\d+[+\-*])+(\d+)' 的含义:
# \d+:匹配一个或多个数字
# [+\-*]:匹配一个加号、减号或星号(运算符)
# 整个模式匹配一个数学表达式,例如 1+2 或 3*4
# .group():提取匹配到的完整字符串result = eval(equation)
# 使用 eval() 函数计算匹配到的数学表达式的结果key = {'value': result}
# 将计算结果封装到字典中,作为POST请求的数据flag = s.post(url, data=key)
# 使用会话对象发送POST请求到目标URL,并附带计算结果作为数据print(flag.text)
# 打印服务器返回的响应内容

 

 

http://www.xdnf.cn/news/459.html

相关文章:

  • 【Test】function 包装器 和 bind 包装器的使用
  • 软件测试:静态测试与动态测试的全面解析
  • 大模型Rag - 如何评估Rag
  • SpringBoot启动后初始化的几种方式
  • P1042【深基8,例1】乒乓球
  • C++手撕STL-其二
  • Pandas取代Excel?
  • MCGS昆仑通太屏笔记
  • 【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能
  • 科学研究:怎么做
  • 【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • OSPF综合实验(HCIP)
  • 第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
  • AUTOSAR图解==>AUTOSAR_SWS_KeyManager
  • 那就聊一聊mysql的锁
  • Firewalld防火墙
  • (二)Trae 配置C++ 编译
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
  • 240419 leetcode exercises
  • React 文章列表
  • JVM基础认知:JVM到底是什么?为什么它如此重要?
  • 神经网络的数学之旅:从输入到反向传播
  • 进程控制(下)【Linux操作系统】
  • stm32| 中断标志位和中断挂起位 | TIM_ClearFlag 函数和TIM_ClearITPendingBit 函数
  • .net core web api 数据验证(DataAnnotations)
  • Java集合框架中的List、Map、Set详解
  • 焕活身心,解锁健康养生新方式
  • C#学习第17天:序列化和反序列化
  • 基于Redis的3种分布式ID生成策略