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.mzph.cn/pingmian/4024.shtml

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

相关文章

打造智能语音机器人-用语音控制机器人

人工智能现已成为国家发展重大战略&#xff0c;智能语音技术作为人工智能产业链上的关键一环&#xff0c;AI应用成熟的技术之一&#xff0c;人工智能的发展也进入了一个崭新的阶段。那么打造智能语音机器人怎样实现用语音控制机器人呢&#xff1f;和小编一起来看看。 选择合适的…

hbase MultiRowRangeFilter的原理、作用和实例

MultiRowRangeFilter是HBase中的一个过滤器&#xff0c;用于在扫描操作中过滤多个行键范围 原理 MultiRowRangeFilter的原理是将多个行键范围组合成一个过滤器&#xff0c;然后在扫描操作中应用这个过滤器。当扫描器遍历HBase表的行时&#xff0c;它会检查每一行的行键是否在…

大话人工智能之(一)深度学习概念

一.机器学习 机器学习是人工智能的一个分支&#xff0c;它是通过计算的手段&#xff0c;通过大数据所产生的经验来改善计算的性能。与传统的人工向机器输入知识的操作不同&#xff0c;机器学习是从大数据中获取经验&#xff0c;通过指定的算法自身从经验中学习到所需的知识&…

jmeter之连接MySQL数据库

jmeter连接mysql数据库 mysql官网下载地址&#xff1a;MySQL :: Download Connector/J 步骤如下&#xff1a; 1、下载mysql的jar包放入到jmeter的lib/ext下&#xff0c;然后重启jmeter 链接: https://pan.baidu.com/s/1rRrMQKnEuKz8zOUfMdMHFg?pwdawfc 提取码: awfc 2、配置…

备份方式分类

备份方式是确保数据安全和业务连续性的重要措施&#xff0c;主要包括以下几种类型&#xff1a; 完全备份&#xff08;Full Backup&#xff09;&#xff1a;这是最简单的备份方式&#xff0c;它会复制所有选定的数据和系统文件。完全备份提供最全面的恢复点&#xff0c;但占用的…

B站秒杀项目学习心得

项目地址&#xff1a;B站大学 特别鸣谢&#xff1a;某大佬博客 在该项目中核心就是秒杀的实现&#xff1a;大量用户进行秒杀订单时不能超卖、同一用户不能重复抢 不能超卖在doSeckill1中通过update的排他性实现(乐观锁)。 //拿到秒殺商品TSeckillGoods seckillGoods itSecki…

华尔街幽灵的规则

华尔街幽灵规则解析 规则一:永远不要持仓待涨&#xff0c;不要等市场提醒你出错才清除掉错误仓位。 这条规则其实也就是不要通过止损出场&#xff0c;等到触发止损出场&#xff0c;那么很可能已经造成一些亏损&#xff0c;长此以往&#xff0c;亏损会不断累积&#xff0c;伤到根…

selenium入门篇(环境搭建、八大定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试&#xff0c;还需要记录、调试网页的细节 一、selenium环境搭建 一键搭建 pip3 install webdriver-helper 安装后自动的完成&#xff1a; 1. 查看浏览器的版本号 2. 查询操作系统的类型 …

本地Mysql开启远程访问(图文)

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 事因是访问同事的数据库时&#xff0c;出现无法访问 出现1130 - Host ‘IT07’ is not allowed to connect to this MySQL server截图如下&#xff1a; 2. 原理分析 如果账号密码地址都正常的情况下&#xff0c;这是没开…

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

随着云时代的到来&#xff0c;越来越多企业开始在公有云、私有云乃至 K8s 容器平台构建实时数据平台。云计算基础设施的革新&#xff0c;促使着数据仓库朝着云原生的方向发展。而用户日益复杂的业务负载和降本增效的需求&#xff0c;对于系统资源的精细化管理和成本效益等方面提…

笔记:oracle报错ORA-55941

说明 在删除audsys下的表时报错 ORA-55941: 不允许对表 "AUDSYS"."CLI_SWP$233f2a8a$1$1" 执行 DML 和 DDL 操作解决方案 扩展 定期PURGE部分AUD$ 第一步针对AUDIT_TRAIL_AUD_STD设置init_cleanup每24小时执行一次. BEGIN IF NOT DBMS_AUDIT_MGMT.IS_…

IDEA 编码规约扫描 Code inspection did not find anything to report.

IDEA安装了Alibaba Java Coding Guidelines插件&#xff0c;却看不到规约检查结果。手动进行编码规约扫描&#xff0c;弹窗提示“Code inspection did not find anything to report.”&#xff1a; 这种情况是因为代码文件所在的目录被标记成了测试文件&#xff08;Test Source…

IT運維國産化替代:挑戰與機遇並存

隨著信創國産化浪潮的持續推進&#xff0c;IT運維&#xff08;ITOM&#xff09;作為信息化體系中的關鍵環節&#xff0c;其國産化替代的重要性日益凸顯。面對日益複雜的國內外信息技術環境&#xff0c;以及企業數字化進程的快速發展&#xff0c;企事業單位在IT運維方面正面臨著…

python3GUI--PyQt5打包心得(三)NIS Edit制作安装程序(详细图文演示)

文章目录 一&#xff0e;前言二&#xff0e;介绍三&#xff0e;下载、安装1.下载2.安装 四&#xff0e;制作安装程序四&#xff0e;验证五&#xff0e;总结 一&#xff0e;前言 传送门&#xff1a; python3GUI–PyQt5打包心得&#xff08;详细图文演示&#xff09; python3GU…

本地体验最强开源模型Llama3+Qnw(支持Windows和Mac)

一键运行大模型本地软件&#xff08;含模型&#xff09;&#xff1a;点击下载 Meta放出Llama3模型了&#xff0c;也应该是这段时间里的一个科技大新闻了。 Llama一直都是开源大语言模型的领头羊驼。 而Llama3又是所有羊驼中最新的领头羊。 可以简单地来看一下官方的对比数据…

SnapGene Mac v5.3.1中文激活版:综合性分子生物学软件

SnapGene Mac是一款功能全面、操作便捷的综合性分子生物学软件&#xff0c;专为Mac用户打造。它集成了DNA序列编辑、分析、可视化和团队协作等多种功能&#xff0c;为科研人员提供了一个高效、可靠的分子生物学研究工具。 SnapGene Mac v5.3.1中文激活版下载 在SnapGene Mac中&…

idea自定义配置文件的注释

打开 IntelliJ Idea 软件 依次找到 File—>Editor—>File and Code Templates 设置 Files 下的Class、Interface、Enum等 输入下面的内容 /** * description: ${NAME} * date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * author: author **/

深度学习比较有用的网站

1.前沿论文学习和效果对比 Browse the State-of-the-Art in Machine Learning | Papers With Code 超简单实用&#xff0c;推荐的深度学习科研必备网站&#xff08;轻松找论文&#xff0c;代码项目&#xff0c;写论文综述&#xff09;| 土堆教程_哔哩哔哩_bilibili 2.前沿模…

机器学习中的K-均值聚类算法及其优缺点

K-均值聚类算法是一种常见的无监督学习算法&#xff0c;用于将数据集划分为K个不同的类别。该算法的目标是最小化数据点与其所属聚类中心之间的平均平方距离。下面分别介绍K-均值聚类算法的步骤和其优缺点。 K-均值聚类算法的步骤如下&#xff1a; 初始化K个聚类中心&#xf…

2024OD机试卷-分配土地(java\python\c++)

题目&#xff1a;分配土地 题目描述 从前有个村庄&#xff0c;村民们喜欢在各种田地上插上小旗子&#xff0c;旗子上标识了各种 不同的只数字。某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民&#xff0c;请问此次分配土地&#xff0c;做出贡…