Bluecms v1.6万能密码登录后台
- 阅读本章需要掌握的技术
HTTP请求协议基础
了解基础的SQL语句(增删改查)
- 常用工具
BurpSuite
Sqlmap
Sql注入漏洞原理
访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。实际环境中很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。
SQL注入漏洞危害
SQL注入通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 造成SQL注入漏洞原因有两个:一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。
Bluecms v1.6万能密码登录后台(靶场地址详见附录)
定位到文件login.php
查看check_admin()函数定义:
查看getone()函数定义,并没有对用户输入进行过滤处理:
返回login.php,由于login.php文件包含 /include/common.inc.php 文件,发现该文件对超全局变量$_GET $_POST等进行了 addslashes() 函数处理:
因为数据库编码是gbk2312,而$name使用了addslashes()函数过滤,所以存在宽字节注入漏洞:
漏洞利用: