BUUCTF web [BJDCTF2020]EasySearch wp

本文详细介绍了在BJDCTF2020比赛中解决EasySearch挑战的过程,主要涉及SSI注入和PHP代码审计。通过Python脚本找出特定MD5前缀的字符串,然后利用SSI漏洞寻找并控制shtml文件,最终获取到flag。

考点
①ssi注入
进去之后是一个登录框,猜测有没有register.php,经过测试也不存在sql注入。直接御剑扫描(扫buuctf上的题要调线程和超时,我是线程10超时15,不然会被平台禁掉)。扫出来了index.php.swp

在这里插入图片描述
index.php.swp源码

<?php
	ob_start();
	function get_hash(){
   
   
		$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
		$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,
### BUUCTF Web 题目 Writeup #### SQL 注入攻击中的堆叠注入技巧 在处理SQL注入漏洞时,堆叠注入是一种常见的技术。具体来说,在给定场景中,通过向服务器发送恶意构造的HTTP请求来获取数据库结构信息。例如,为了查询数据库名称: ```sql 1' UNION SELECT NULL, version() -- ``` 当进一步探索表名时,可以利用以下方法绕过简单的过滤机制[^1]。 对于更复杂的过滤条件,比如`from`关键字被加入黑名单的情况,则需要更加巧妙的方法去规避这些限制。一种可能的方式是使用子查询或者其他不涉及敏感关键词的技术实现相同功能。 #### 利用命令注入读取文件内容 针对存在命令注入缺陷的应用程序,可以通过精心设计的有效载荷(payload)执行任意操作系统指令。如下面的例子所示,它展示了如何通过修改URL参数并结合Linux shell工具链(`echo`, `tr`, 和 `cat`)来读取特定文件的内容而不触发基于正则表达式的检测规则[^2]: ```bash /?ip=qq.com;echo$IFS$1FLAG.PHP|tr$IFS$1A-Z$IFS$1a-z|xargs$IFS$1cat ``` 这段代码的作用是以大写字母形式传递目标文件名,并将其转换成小写后再调用`cat`命令打印出来,从而成功绕过了仅识别全小写的防护措施。 #### URL编码与特殊字符替换 PHP框架对来自客户端的数据进行了预处理,这可能导致原始输入发生变化。了解这种行为有助于理解为何某些Payload能够生效而另一些却不行。特别是关于空白符和其他控制字符是如何被解释和存储的知识点非常重要。例如,空格可能会变为下划线或其他符号;NULL字节(%00)也可能引起意外的结果。因此,在构建测试案例之前应该充分考虑这些问题的影响[^3]. ```php <?php // 示例:展示 PHP 如何解析 URL 参数 parse_str('foo=%20bar&baz%00=fizz', $output); print_r($output); // Array ( [foo_] => bar [baz_] => fizz ) ?> ``` 以上就是一些典型的CTF竞赛中遇到的安全挑战及其解决方案概览。希望上述分析能帮助读者更好地理解和解决类似的网络安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值