前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计 - zzzphp Sql注入 (文末抽奖)

代码审计 - zzzphp Sql注入 (文末抽奖)

作者头像
Khan安全团队
发布2021-07-09 15:20:50
2.1K0
发布2021-07-09 15:20:50
举报
文章被收录于专栏:Khan安全团队

zzzphp免费开源建站系统采用PHP免费建站整站系统,所有源码开源完整,支持手机自动同步。

在本地搭建服务器,httpd-vhosts.conf 中设置本地绑定的域名:

其中,zzzphp为下载的zzzphpcms的内容。

然后,本机上的zzzphp cms的目录结构为如下:

在按照要求安装好cms后,本地cms的后台地址访问地址为admin264.

在登陆后台后,使用postman发送如下请求:

必须在cookie中设置登陆服务器后返回的cookie值,否则执行将失败:

该cookie值在成功登陆服务器后台后会自动获得。

在postman中绑定cookie之后,发送请求:

http://[本地绑定的域名]/[后台地址]/save.php?act=content

需要注意的是,需要在act中传参数act=content。

使用post传的参数中其他都是无关项,但是c_content为关键项。

c_content参数需要先使用单引号和括号闭合语句,然后插入想要执行的sql语句。

这里c_content的值为content’,1,9);createdatabase kaixinjiuhao;//

开始在phpstorm中进行跟踪:

可以看见此时$act=”content”,继续跟进:

然后在phpstorm中跟踪,跟踪到save_content()方法:

其中getform函数为获得我们之前通过post提交的各种参数,需要注意的是$c_content参数

此时,$c_content参数的取值貌似被转义,但是不用着急,往下看。

在第299行,c_pagedesc参数在post不传值的情况下,成功获得我们输入的_content的值,并且该值未经过转义:

继续跟踪,在第237行执行db_insert函数,跟进:

然后在在db_insert函数的第243行执行db_exec函数,继续跟进:

d->exec(

最后postman返回消息:

继续往下执行,postman接收到返回回来的数据:

可见命令执行成功、可以成功在数据库中找到新创建的kaixinjiuhao数据库:

证明sql语句执行成功。

同理,save_content()函数中的c_title2同样在post请求未传值时从c_title处获取值,也存在sql注入的风险。



------------------------------------------------------------------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档