BUUCTF WEB刷题记录

本文讲述了渗透测试中通过逆向分析source.php,利用URL编码绕过白名单限制,发现flag文件名并构造堆叠注入,成功获取flag的过程。涉及的技术包括PHP逆向、URL编码、堆叠注入和数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一题
刚打开的页面
在这里插入图片描述
看源码,发现source.php
在这里插入图片描述
访问source.php
在这里插入图片描述
我们要用file参数带出flag,但是有白名单限制。第一个和第二个判断是对file本身的值进行判断,第三个和第四个是对?前面的file值进行判断,所以我们可以从第二个和第三个入手。
构造file值为source.php?../…/…/…/…/…/…/…/…/…/…/flag(要进行URL编码)
在这里插入图片描述
额,啥都没有,换成etc/passwd试试
在这里插入图片描述
没有flag。然后发现代码白名单有个hint.php,访问一下看看
在这里插入图片描述
好吧,找到flag文件名,构造file=source.php%3f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2fffffllllaaaagggg,获取flag
在这里插入图片描述
第二题
在这里插入图片描述
万能密码试一下
在这里插入图片描述
在这里插入图片描述
还真是easy sql

第三题
在这里插入图片描述
看源码发现
在这里插入图片描述
构造参数cat=dog
在这里插入图片描述
第四题
在这里插入图片描述
在这里插入图片描述
过滤了这些字段
尝试一些堆叠注入
输入 1’; show databases#

看一下当前数据库的表
在这里插入图片描述
看下两个表的列名
在这里插入图片描述
第二个表因为是数字,所以查的时候加上反引号
在这里插入图片描述
发现第二个表就是我们的目标表了。
查看当前表的全部数据
在这里插入图片描述
可以推测当前表是words表,并且根据id字段来查询。
我们可以把words表改成别的名字,第二个表的名字改成words,因为第二个表没有id字段,所以添加一个id字段。
语句为
1’;rename table words to word123;rename table `1919810931114514` to words;alter table words add(id int(10))#
然后爆出全部数据
在这里插入图片描述
获得flag

第五题
堆叠注入
在这里插入图片描述
在这里插入图片描述
貌似当前数据库只有Flag表
源码的SQL语句是这样的
select $_GET[‘query’] || flag from flag
然后输入 *,1 获取flag
在这里插入图片描述
或者输入
2;set sql_mode=PIPES_AS_CONCAT;select 2
在这里插入图片描述

先记录到这,剩下有空在写

### 显示每次提交前差异的方法 在 Git 中,可以通过 `git diff` 和其他辅助命令来查看每次提交之前的差异。以下是实现这一目标的具体方法: #### 使用 `git diff HEAD~1` 要查看最近一次提交 (`HEAD`) 与其父提交 (`HEAD~1`) 的差异,可以运行以下命令: ```bash git diff HEAD~1 HEAD ``` 这条命令会显示当前分支最新的一次提交所引入的变化[^1]。 #### 自动化流水线中的应用 对于自动化流水线的需求,通常需要结合脚本动态获取最新的两次提交并计算其差异。例如,在 CI/CD 流水线中,可以使用如下方式获取上一次提交的哈希值并与当前提交进行对比: ```bash PREV_COMMIT=$(git rev-parse HEAD~1) CURRENT_COMMIT=$(git rev-parse HEAD) git diff $PREV_COMMIT $CURRENT_COMMIT ``` 上述代码片段能够帮助开发者或工具自动检测每次提交带来的具体更改[^5]。 #### 处理 Merge 提交的情况 当遇到 merge 类型的提交时,默认情况下可能会导致不期望的结果。为了确保只关注实际修改的内容而非合并操作本身的影响,推荐采用三路比较模式 (three-dot syntax),即: ```bash git diff HEAD~1...HEAD ``` 此语法专注于展示由本次提交单独引起的改动部分而忽略那些仅因合并产生的重复内容[^4]。 #### 特定文件或者目录下的差异 如果只想了解某一部分(比如某个子目录或单个文件)内的变动情况,则可以在原有基础上附加路径参数。例如: ```bash git diff HEAD~1 -- path/to/directory/or/file ``` 这样就可以限定范围至指定区域内的变化记录了[^2]。 ### 总结 综上所述,利用 `git diff` 结合适当选项和上下文信息(如 commit id 或者相对位置), 可以有效地追踪每一次提交之前所做的调整, 并满足各种场景需求包括但不限于日常开发以及持续集成环境当中.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值