sql注入(二)

611 0
kal 2021-11-5 20:26:13 | 显示全部楼层 |阅读模式
本帖最后由 kal 于 2021-11-5 20:26 编辑

0x01 环境准备          1.Seasy代码审计系统
     2.phpStudy
0x02 源码分析
  1. if (strpos($r_url,"siteconfig.php")==0 && strpos($r_url,"label")==0 && strpos($r_url,"template.php")==0) {
  2. foreach ($_GET as $get_key=>$get_var){ stop($get_var);}      
  3. foreach ($_POST as $post_key=>$post_var){ stop($post_var);        }
  4. foreach ($_COOKIE as $cookie_key=>$cookie_var){ stop($cookie_var);        }
  5. foreach ($_REQUEST as $request_key=>$request_var){ stop($request_var);        }
  6. }
复制代码
<注:由于厂家等原因,这里只展示部分关键代码>


此段代码的所用是依次将来自 GET 、POST、COOKIE、REQUEST的请求进行转义。
( 补充:foreach(),用于遍历数组中的每个键/值。例如:foreach ($array as $value),每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。)
针对本代码,简单来说就是对字符型请求的每个元素,依次进行stop()函数的检测和过滤。

开发人员为了安全,对基本上所有的请求都进行了处理,我们为了寻找漏洞只能另寻其路。


0x03 漏洞挖掘
我们所想要的,即绕过这个检查,我们关注这个函数的条件代码:
  1. if (strpos($r_url,"siteconfig.php")==0 && strpos($r_url,"label")==0 && strpos($r_url,"template.php")==0) {
复制代码
strpos()函数:主要是用来查找字符在字符串中首次出现的位置。
即:当我们所发送的url中,含有siteconfig.php、label、template.php此类字符串时,以下的检查不会被执行。
下面我们来做个对比:
  1. a=select
复制代码

告警了
  1. a=siteconfig.php&b=select
复制代码

未告警
0x03 结语
由开发者代码不难看出,开发者事先想的是:当进入siteconfig.php、template.php这类文件时,不进行检查。
出于方便,他便直接用strpos进行判断
具体漏洞利用本次不给出,其思路大致为:继续分析其他文件,根据代码逻辑,拼接语句使注入语句成功闭合。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

kal

初级红客

关注
  • 7
    主题
  • 5
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行