BUUCTF--web(1)

1、[极客大挑战 2019]Http1

1.http报文请求:

1、请求行:

        第一部分是请求方法,常见包括GET、POST、OPTIONS(我目前还没有见过我是菜鸡)

        第二部分是url

        第三部分是HTTP协议(http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。)
2、请求头

1、Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名

2、User-Agent:发送请求的应用程序名称

3、Accept: 表示客户端可以接受的内容类型,多个值使用;分号隔开q=0.9 表示权重优先级,*/*表示可以接受任意类型内容

4、Accept-Language:通知服务器可以发送的语言

5、Accept-Encoding:通知服务端可以发送的数据压缩格式

6、Content-Type:表单提交时才有可能出现,表示表单的数据类型,使用url编码,url编码 % 16位数

7、Upgrade-Insecure-Requests:告诉服务器,浏览器可以处理https协议

8、请求头结束后有一个空行,与请求体进行分隔
3、请求体

2.解题:

GET没有请求体,POST有请求体

打开题目首先查看源代码,发现了一个secret.php,

打开看一下,发现有限制(考察http报文请求)

因此考虑抓包后改包上传,在请求头中加入Rferer:

显示使用“Syclover”浏览器,把User-Agent中的Firefox/125.0改成Syclover

显示只能用本地查看,添加X-Forwarded-For: 127.0.0.1后放包,得到flag

2、[极客大挑战 2019]Knife1

打开题目发现一个一句话木马,考虑蚁剑链接找flag

连接成功,找到flag

3、[ACTF2020 新生赛]BackupFile1

打开题目发现提示只有查看源码,但是根据题目提示BackupFile备份文件,考虑尝试找到备份文件。

常见的备份文件后缀名有 .git .svn .swp .~ .bak .bash_history

尝试后发现此题输入index.php.bak是找到文件。

is_numeric() 函数用于检测变量是否为数字或数字字符串。

语法

bool is_numeric ( mixed $var )

参数说明:

  • $var:要检测的变量。

返回值

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

intval() 函数可以获取变量的「整数值」。常用于强制类型转换。

语法

int intval( $var, $base )

参数

    $var:需要转换成 integer 的「变量」
    $base:转换所使用的「进制」

返回值

返回值为 integer 类型,可能是 0 或 1 或 其他integer 值。

    0:失败 或 空array 返回 0
    1:非空array 返回 1
    其他integer值:成功时 返回 $var 的 integer 值。

返回值的「最大值」取决于系统

    32 位系统(-2147483648 到 2147483647)
    64 位系统(-9223372036854775808到9223372036854775807)

题目要求传入参数key,key的值只能是数并和key的值进行比较,这里涉及php弱比较

php的弱比较:

  • === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
  • == 在进行比较的时候,会先将字符串类型转化成相同,再比较

因此构造payload:key=123

4、[RoarCTF 2019]Easy Calc1

打开题目发现一个输入框,想到了sql注入,用1'测试注入时发现框内仅可识别数字,查看源码

在url中发现一个传输数据的calc.php文件,尝试打开

这里需要空格绕过waf,PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除空白符

2.将某些字符转换为下划线(包括空格)

因此可以将上传num前加一个“ ”,这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样代码还能正常运行,还上传了非法字符。于是参考[RoarCTF 2019]Easy Calc 构造payload:

calc.php? num=2;var_dump(scandir(chr(47)))

扫根目录下的所有文件,也就是scandir("/"),因为/被过滤就改为chr(47)

scandir() 函数用于获取指定目录中的文件和文件夹列表。它接受一个路径作为参数,并返回一个包含指定目录中所有文件和文件夹的数组。scandir(".") 表示获取当前目录下的文件列表。
var_dump() 函数将该列表输出到页面上。

chr(47)是“/”的ASCII编码。

找到一个"f1agg",猜想与flag有关,尝试查看其内容

calc.php?num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法;
chr(47)是/的ASCII编码;
chr(102)是f的ASCII编码;
chr(49)是1的ASCII编码;
chr(97)是a的ASCII编码;
chr(103)是g的ASCII编码。

5、[极客大挑战 2019]BuyFlag1

打开题目在菜单中找到与buyflag相关的提示

提示说只有cuit的学生可以购买,同时还需要正确的密码。尝试查看源码找跟多的信息。

发现有is_numeric() 函数,判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假

同时还存在一个php弱类型比较,如果$password==404则可以绕过。用password==404aaa绕过,因为题目还有身份验证,考虑抓包

cookie的值看起来值得思考,尝试修改后看有什么变化

发现现在身份验证和密码都是对的,可以开始支付了题目中说:Flag need your 100000000 money,尝试上传money,显示上传数字过长,想到了可以用科学计数法绕过,e表示10,e后面的数字表示次方,100000000表示为1e8,尝试输入money=1e8后提示money不够。尝试1e9

6、[BJDCTF2020]Easy MD5 1

打开题目只有一个输入框,查看源码发现没有信息后尝试抓包,在输入框任意输入后尝试转包发现hint

“select * from 'admin' where password=md5($pass,true)”,sql会将传入的$pass在进行md5哈希后 在‘admin’表中匹配是否有与其相等的值。其中利用散列函数md5加密了password因为传参进行了md5加密,所以普通输入的SQL语句:or 1 ;这是不会被解析执行的。所以得想一个当输入进去的值能被md5加密解析成 or 语句,查看资料发现万能密码ffifdyop

ffifdyop:

ffifdyop经过md5加密后为:276f722736c95d99e921722cf9ed621c

再转换为字符串:'or’6<乱码> 即 'or’66�]��!r,��b

select * from 'admin' where password=md5($pass,true)

在php中md5中的第二个参数不填默认是no,也可以填入yes

当第二个参数为no时返回的是一个十六进制字符串

当第二个参数为yes时返回的是二进制字符串(也就是16字符串转ascii码字符串)

绕过原理是:
ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ' or '6
而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from 'admin' where password='' or '6xxxxx',等价于 or 一个永真式,因此相当于万能密码,可以绕过md5()函数

输入ffifdyop后,跳转到新页面,查看源码发现一个弱比较

方法一:0e绕过

PHP在处理字符串时会出现缺陷,可能将一些向科学计数法的字符串误判为科学记数法,导致其使用科学计数法的计算方式。因此md5加密后的哈希值第一位为0,第二位为e,后面不论是什么都认为和0相等,一下几个字符串经过md5函数后开头都为0e

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

构造payload:?a=QNKCDZO&b=240610708

方法二:数组绕过

无论是PHP弱比较还是强比较,md5()函数无法处理数组,如果传入的是数组,会返回NULL,两个数组经过加密后返回值均为NULL,形成相等。

构造payload:?a[]=1&b[]=2

之后得到此页面,包含MD5强碰撞,要求与之前一样,需要两个参数的值不同但MD5转换后相同。强碰撞只能用数组绕过。

构造payload: param1[]=1&param2[]=2

ffifdyop原理:https://www.cnblogs.com/redfish404/articles/17878453.html

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

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

相关文章

c++多文件,cmakelist编写简单示例

记录下c多文件cmakelist编写流程&#xff1a; 目录结构大致如下&#xff1a; 1、swap.h #include <iostream> #include <vector> #include <string> using namespace std;void swap(int *a,int *b); 2、swap.cpp #include "swap.h"void swap(…

【Linux学习】​​学习Linux的准备工作和Linux的基本指令

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

【Linux】基础指令

文章目录 基础指令1. pwd 指令2. cd 指令3. ls 指令4. touch 指令5. mkdir 指令6. rmdir 和 rm 指令7. man 指令8. cp 指令9. mv 指令10. cat 指令11. more 和 less 指令12. head 和 tail 指令13. date 指令14. cal 指令15. find 指令16. grep 指令18. zip 和 unzip 指令19. ta…

Unity打开Android文件管理器并加载文件

1、在AssetStore商店中加入免费插件 2、调用代码 3、使用UnityWebRequest加载路径数据

RabbitMQ(高级)笔记

一、生产者可靠性 &#xff08;1&#xff09;生产者重连&#xff08;不建议使用&#xff09; logging:pattern:dateformat: MM-dd HH:mm:ss:SSSspring:rabbitmq:virtual-host: /hamllport: 5672host: 192.168.92.136username: hmallpassword: 123listener:simple:prefetch: 1c…

【问题实操】银河高级服务器操作系统实例分享,配置hugepages启动异常

1.问题现象 某运营商国产服务器操作系统项目&#xff0c;部署Kylin-Server-0524-aarch64服务器系统&#xff0c;内核从4.19.90-24.4升级到4.19.90-25.14。在grub中配置huagepages大页内存后&#xff0c;系统在内核启动阶段黑屏&#xff0c;只显示一个光标。grub配置如下图&…

Springboot+Vue项目-基于Java+MySQL的商业辅助决策系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现 MobileNetV4 - Universal Models for the Mobile Ecosystem PDF: https://arxiv.org/pdf/2404.10518.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: ht…

Post请求中常见的Content-Type类型

Post请求中常见的Content-Type类型的结构 &#xff08;1&#xff09;application/x-www-form-urlencoded 这是浏览器原生的form表单类型&#xff0c;或者说是表单默认的类型。 下面是一个请求实例&#xff1a; 请求报文&#xff1a; 可以看得出&#xff0c;post将请求参数以k…

配置jupyter的启动路径

jupyter的安装参考&#xff1a;python环境安装jupyter-CSDN博客 1&#xff0c;背景 继上一篇python环境安装jupyter&#xff0c;里面有一个问题&#xff0c;就是启动jupyter&#xff08;命令jupyter notebook&#xff09;之后&#xff0c;页面默认显示的是启动时候的路径。 …

HarmonyOS开发案例:【使用List组件实现设置项】

介绍 在本篇CodeLab中&#xff0c;我们将使用List组件、Toggle组件以及Router接口&#xff0c;实现一个简单的设置页&#xff0c;点击将跳转到对应的详细设置页面。效果图如下&#xff1a; 相关概念 [CustomDialog]&#xff1a;CustomDialog装饰器用于装饰自定义弹窗。[List]…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式&#xff08;Routing&#xff09;是 RabbitMQ 中的一种消息传递模式&#xff0c;也称为直连模式。它允许生产者将消息发送到一个交换机&#xff0c;并指定一个或多个路由键&#xff08;routing key&#xff09;&#xff0c;交换机根据路由键将消息路由到与之匹配的…

【介绍下Chrome插件开发】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

使用 NVM 动态切node版本

一、安装nvm 官网链接&#xff1a; Release 1.1.9 coreybutler/nvm-windows GitHub 无脑安装直接下一步 安装完之后验证一下&#xff1a; #打开命令行输入命令 nvm 这样就是安装好了&#xff0c;然后我们开始安装node。 二、使用nvm安装node 1、去node官网获取版本号 …

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题&#xff1f;数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题&#xff1f; 也叫多目标车间调度问题。 柔性作业车间调…

什么是pytest自动化测试框架?如何安装和使用呢?

一、pytest是什么&#xff1f; pytest是一款强大的Python测试工具&#xff0c;可以胜任各种类型或级别的软件测试工作。实际上&#xff0c;越来越多的项目在使用pytest。因为pytest会提供更丰富的功能&#xff0c;包括assert重写、第三方插件&#xff0c;以及其他测试工具无法…

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

大家知道咱们社区近期TSMC 12nm ARM Cortexa-A72(1P9M 6Track Metal Stack)已经开班。这里小编要强调一点:不要认为跑了先进工艺的项目就会很有竞争力&#xff01;如果你仅仅是跑个先进工艺的flow&#xff0c;不懂先进工艺在数字IC后端实现上的不同点&#xff0c;为何有这样的不…

Kali Linux中抓包工具Burp Suite安装教程_kali burpsuite抓包教程

目录 安装环境 一、Kali Linux系统信息 ​编辑 二、安装及配置 1.下载Burp Suite 2.安装 3.配置proxy代理 安装环境 主机&#xff1a;MacBooPro 2021 M1 Pro 系统&#xff1a;Ventura 13.1 虚拟机软件&#xff1a;Parallels Desktop 虚拟机系统&#xff1a;Kali Linux…

文件类型的活码怎么制作?文件二维码在线生成的方法

文件的二维码现在很常见&#xff0c;通过这种方式来分享文件有很多的好处&#xff0c;比如文件的安全性更高&#xff0c;可以多人同时查看&#xff0c;有利于传播分享&#xff0c;而且这种方式的成本比较低&#xff0c;生成一个长期有效的活码二维码可以一直使用。 活码二维码…