电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1642 人浏览分享

代码审计----sql注入篇

[复制链接]
1642 0
代码审计----sql注入篇

web安全 内网安全。

目录

反序列化漏洞分析篇
1-----------反序列化漏洞分析
2-----------session反序列漏洞分析
PHP代码审计篇
1-----------文件上传
2-----------SQL注入

说在前面

次审计纯属分享审计过程和审计思路 请勿用于非法用途!

审计过程

拿到源码 我们可以本地搭建 进入后台看看有什么可能存在漏洞功能块。

122850gwdszgoq5sqdcgjd.png

我们可以看到里面有一些功能 里面有一个sql的写入框 有问题看看有没有过滤 我们随便输入东西看一看

122914yvwpfkzsj1sij7jj.png

看来存在过滤

但是我们有源码不怕 通过报错信息里有一个非法操作 放到工具里面源码审计系统搜搜看

669.png

发现里面1到17个都有感叹号 说明这个程序运行是在最后一个里面 发现后面两个都是在同一个php文件里面我们先看第一个

122957i3ojubc3uesf5u64.png

后来发现最后面两个搜索结果都是同一个地方 可能是搜索结果出现问题了

回到正题 通过这个搜索我们还不能判断是否程序运行在这里 我们再看看里面的参数有titl limits orders isall sqls
等等他们都是通过frparam函数将这些参数里面的具体内容传递给$data这个数组里面 既然是参数可以肯定在抓
包的时候会出现 我们就抓个包试试

在前面那个功能块里面点击保存 并抓包

668.png

667.png

我们可以看到里面的参数和我们源码里面看到的参数一样且sql的输入框框是sqls这个参数 基本可以肯定是这里了

接下来就是代码审计了

666.png

我们可以看到他做了一个if判断 通过frparam函数的运行结果是否等于1,我们看看frparam函数这个函数一看就
是自定义的,对于自定义的函数肯定有function frparam这个函数声明,我们去搜一搜。

665.png

找到了 点进去看看

664.png

可以看到它是获取URl的参数值,通过前面调用这个函数 他已经go和1传过来了 所以这里的$str和$int为go和1。

663.png

这里$data = $this->_data;意思是把前端的所有数据传过来 这时候再判断$str是否为空 再通过这个array_key_exists函数判断
$str是否在不在$data里面,显然都不满足 所以跳过 后面他在$method变量判断 显然是为空的 因为我们没有赋值给他就默认
了然后把 $data[$str]赋值给$value了,最后再return format_param($value,$int,$default);看一看format_param函数。

662.png

661.png

这里他参数过滤 格式化了 通过前面传来的int=1 我们直接跳到case 1:里面他通过
SafeFilter函数进行了过滤 我们定位看看

660.png

可以看到他里面过滤了xss攻击了 简单看了一下 是过滤xss的 顺便看下这个框框有没有xss漏洞
通过 $arr = preg_replace($ra,'',$arr)这个函数判断$arr有没有在$ra里面 有就替换成空了看到
$ra里面就过滤了一些基本的js语句,可能会有,然后再接着看下去 就回到前面了。

399.png

可以看到他又把传来的$值给html实体了。。。没戏。

不慌 我们接着看下去。

398.png

可以看到他判断php版本了 大于等于7.4就会通过addslashes函数在每个双引号"前添加反斜杠 然后再return $value
如果没有大于等于 就会判断是否开启魔术方法了,没有就会和上面一样,通过addslashes函数在每个双引号"前添加
反斜杠 然后再return $value,说到这我只能说这代码写的真严谨。。。

好了 这里看完了,回到前面。

397.png

这里return的值就是层层过滤后的$value的值了 这里运行结束,然后我们再返回去看前面。

396.png

好了 一个frparam函数终于看完了 后面好多个都是通过这个frparam层层筛选的和前面一样 就不多说 我们再往下看。

69.png

太长了,截两张 这里他对这个sqls参数进行了stripos函数判断 这个stripos函数是查找我们指定的字符在字符串中第一次出现
的位置 如果有就会输出位置也就是不等于false,也就是为真了,代码里他通过多次或逻辑 只要有一个为真就会执行if里面的
非法操作 这个代码 所以我们只要绕过这些判断 也就是全为假 可以看到他对update,delete,insert,drop,truncate进行
了对比 我们只要不适用这些函数就OK了。

68.png

看到我箭头画的就是执行顺序了 他直接就带入执行了 说明存在漏洞。

漏洞验证

我们只要的插入sql语句的时候不要有上的敏感字符就可以了 payload我相信大家都会写
我就不废话了就直接放sqlmap跑了。

67.png

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

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.