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

目录

①Bugku-GET

②Bugku-POST

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

④Bugku-速度要快

⑤Bugku-秋名山车神

⑥Bugku-cookies


①Bugku-GET

import requests

resp=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 requests

data={'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 base64

r1=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 base64

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

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

import requests
import base64

r1=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 requests


r1=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 base64

s=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 re

url = '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 requests

url='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)

 跑出源码

贴出源码

<?php

error_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即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Visual Studio调试VisionPro脚本

使用Visual Studio调试VisionPro脚本 方法一 &#xff1a; 修改项目文件 csproj步骤&#xff1a; 方法二 &#xff1a; Visual Studio附加功能步骤&#xff1a; 方法一 &#xff1a; 修改项目文件 csproj 步骤&#xff1a; 开启VisionPro脚本调试功能 创建一个VisionPro程序…

VBA技术资料MF99:在代码中使用VLookUp函数

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

华为数通方向HCIP-DataCom H12-831题库(多选题:221-240)

第221题 在割接项目的项目调研阶段需要对现网硬件环境进行观察,主要包括以下哪些内容? A、设备的位置 B、ODF位置 C、接口标识 D、光纤接口对应关系 答案:ABCD 解析: 在项目割接前提的项目调研阶段,需要记录下尽可能详细的信息。 第222题 以下哪些项能被正则表达式10*成…

每日一题——LeetCode206.反转链表

个人主页&#xff1a;白日依山璟 专栏&#xff1a;Java|数据结构与算法|每日一题 文章目录 1. 题目描述示例1示例2示例3提示 2. 思路3.代码 1. 题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例1 输入&#xff1a;head [1…

<JavaEE> TCP 的通信机制 -- 确认应答 和 超时重传

目录 TCP的通信机制的核心特性 一、确认应答 1&#xff09;什么是确认应答&#xff1f; 2&#xff09;如何“确认”&#xff1f; 3&#xff09;如何“应答”&#xff1f; 二、超时重传 1&#xff09;丢包的概念 2&#xff09;什么是超时重传&#xff1f; 3&#xff09…

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 94. 二叉树的中序遍历&#xff1a; …

什么样的产品适合建设私域流量池?

私域流量是什么&#xff1f;公域流量和私域流量是相对概念&#xff0c;触达和运营更加自由的流量称为私域流 量。私域流量的形态&#xff0c;我们称为私域流量池。私域流量池本质是便捷和低成本的运营方式&#xff0c; 运营用户&#xff0c;追求更便宜的流量来源、更高的售卖转…

什么是动态IP?静态IP和动态IP有什么区别?

动态IP(Dynamic IP)和静态IP(Static IP)它是指在计算机网络中分配给设备的两种不同类型的IP地址。 动态IP是指每次设备连接到网络时&#xff0c;网络服务提供商(ISP)IP地址的动态分配。当设备重新连接到网络时&#xff0c;它可能会被分配到不同的IP地址。动态IP适用于传统的家…

通过IntersectionObserver实现图片下拉加载(瀑布流布局)

效果展示&#xff1a; 瀑布流上拉加载 目录结构 html: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"vie…

力扣刷题记录(18)LeetCode:474、518、377、322

目录 474. 一和零 518. 零钱兑换 II 377. 组合总和 Ⅳ 322. 零钱兑换 总结&#xff1a; 474. 一和零 这道题和前面的思路一样&#xff0c;就是需要将背包扩展到二维。 class Solution { public:int findMaxForm(vector<string>& strs, int m, int n) {vector&l…

KNN与KD树博客总结

目录 总结小结&#xff1a; 总结 原始篇&#xff1a;KNN算法及其优缺点算法思想改进篇&#xff1a;KD树&#xff08;KNN的plus版算法实现第一篇&#xff1a;平衡二叉树的构建&#xff08;递归算法实现第二篇&#xff1a;KD树的构建&#xff08;递归算法实现第三篇&#xff1a;…

开源持续测试平台Linux MeterSphere本地部署与远程访问

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

windows安全配置实验手册

访问控制策略&#xff08;L1940520022J&#xff09; 预备知识 Windows 7中&#xff0c;不仅有面向软件的限制方法&#xff0c;还增加了一种名为AppLocker的访问控制策略&#xff08;仅适用于企业版和旗舰版&#xff09;。 实验环境 操作系统类型&#xff1a;windows 7。 实…

【问题记录-ASIO】Audition多通道ASIO驱动提示“(不工作)“问题

一&#xff0c;问题现象 在使用Audition打开多通道工程&#xff0c;使用ASIO驱动&#xff0c;却发现设备提示“不工作”&#xff0c;如下图所示&#xff1a; 二&#xff0c;解决方法 2.1 声卡设备枚举确认 首先确认声卡设备枚举是否成功&#xff0c;如果没有枚举成功&…

【SpringCloud笔记】(10)消息总线之Bus

Bus 前言 戳我了解Config 学习Config中我们遇到了一个问题&#xff1a; 当我们修改了GitHub上配置文件内容&#xff0c;微服务需要配置动态刷新并且需要手动向客户端发送post请求刷新微服务之后才能获取到GitHub修改过后的内容 假如有多个微服务客户端3355/3366/3377…等等…

将本地镜像推送到阿里云

文章目录 创建仓库镜像登录 并上传下载上传的 创建仓库镜像 利用下面的脚本进行配置 登录 并上传 [roothadoop100 ~]# docker login --username13thm registry.cn-hangzhou.aliyuncs.com Password: [roothadoop100 ~]# docker tag ba78e6d6845c registry-vpc.cn-hangzhou.al…

C++-类和对象(1)

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完 成。…

一文读懂铭文赛道新手攻略

近期&#xff0c;加密领域的热点焦点不断涌现&#xff0c;但毫无疑问&#xff0c;"铭文"这个词汇已经成为了近两个月内广受瞩目的关键词之一。像ORDI、SATS、RATS等铭文项目在比特币区块链上获得了惊人的增长&#xff0c;为持有者带来了巨大的财富效应。铭文热潮已经…

使用 Fiddler+Linux 日志 + 数据库,搞懂3个问题,强势回怼开发!

测试过程中有没有遇到过什么问题是你解决的&#xff1f; 遇到bug怎么分析是前端bug还是后端bug&#xff1f; 测试的时候怎么确认你的测试结果是正确的&#xff1f; 定位分析问题的能力是测试不可或缺的&#xff0c;而且这个能力需要项目经验积累以及需要丰富的知识面才能达到…

k8s---kubernets

目录 一、Kurbernetes 1.2、K8S的特性&#xff1a; 1.3、docker和K8S&#xff1a; 1.4、K8S的作用&#xff1a; 1.5、K8S的特性&#xff1a; 二、K8S集群架构与组件&#xff1a; 三、K8S的核心组件&#xff1a; 一、master组件&#xff1a; 1、kube-apiserver&#xff1…