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

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

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

相关文章

TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测

文章目录 效果一览文章概述 订阅专栏只能获取一份代码部分源码参考资料 效果一览 文章概述 TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测 matlab2021 订阅专栏只能获取一份代码 部分源码 %------------------------------------------------------------------…

Golang | Leetcode Golang题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; func totalNQueens(n int) (ans int) {columns : make([]bool, n) // 列上是否有皇后diagonals1 : make([]bool, 2*n-1) // 左上到右下是否有皇后diagonals2 : make([]bool, 2*n-1) // 右上到左下是否有皇后var backtrack func(int)…

SSH新功能揭秘:远程工作提升指南【AI写作】

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

【基础算法总结】双指针算法二

双指针 1.有效三角形的个数2.和为S的两个数字3.和为S的两个数字4.四数之和 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.有效三角形的个数…

mysql download 2024

好久没在官网下载 mysql server 安装包。今天想下载发现&#xff1a; 我访问mysql官网的速度好慢啊。mysql server 的下载页面在哪里啊&#xff0c;一下两下找不到。 最后&#xff0c;慢慢悠悠终于找到了下载页面&#xff0c;如下&#xff1a; https://dev.mysql.com/downlo…

第一个大型汽车ITU-T车载语音通话质量实验室投入使用

中国汽车行业蓬勃发展&#xff0c;尤其是新能源汽车风起云涌&#xff0c;无论是国内还是海外需求旺盛的趋势下&#xff0c;除乘用车等紧凑型车外&#xff0c;中型汽车如MPV、小巴、小型物流车&#xff0c;大型汽车如重卡、泥头车等亦加入了手机互联、智驾的科技行列&#xff0c…

【linux】动静态库的使用与制作

本章节是基础IO的的最后一个话题!! 目录 浅谈一下动静态库&#xff1a;动静态库的制作与使用&#xff1a;静态库&#xff1a;怎么办&#xff1a;方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;方法四&#xff1a; 是什么&#xff1a;为什么&#xff1a; 动态库&#…

ShardingSphere 5.x 系列【26】 数据分片原理之 SQL 路由

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 携带分片键2.1 直接路由2.2 标准路由2.3 笛卡尔路由3. 不携带分片…

MemFire解决方案-物联网数据平台解决方案

方案背景 随着各种通讯、传感技术发展&#xff0c;数据通讯成本的急剧下降&#xff0c;数以万亿计的智能设备&#xff08;智能手环、智能电表、智能手机、各种传感器设备等&#xff09;接入网络&#xff0c;并源源不断的产生海量的实时数据。这些海量数据的价值挖掘&#xff0…

软件物料清单(SBOM)生成指南 .pdf

如今软件安全攻击技术手段不断升级&#xff0c;攻击数量显著增长。尤其是针对软件供应链的安全攻击&#xff0c;具有高隐秘性、追溯难的特点&#xff0c;对企业软件安全威胁极大。 同时&#xff0c;软件本身也在不断地更新迭代&#xff0c;软件内部成分安全性在持续变化浮动。…

了解HTTP代理服务器:优势、分类及应用实践

在我们日常的网络使用中&#xff0c;我们经常听到HTTP代理服务器这个术语。那么&#xff0c;HTTP代理服务器到底是什么&#xff1f;它有什么优势和分类&#xff1f;又如何应用于实践中呢&#xff1f;让我们一起来了解一下。 HTTP代理服务器是一种位于客户端和服务器之间的中间…

一周学会Django5 Python Web开发-Django5 ORM执行SQL语句

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计49条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…