sql注入实战——thinkPHP
sql注入实战——thinkPHPthinkPHP前期环境搭建
下载thinkPHP文件
https://i-blog.csdnimg.cn/direct/e63ef962390e4029a3ea7b6928ede643.png
解压,将framework关键文件放到think-5.0.15中,改名为thinkphp
https://i-blog.csdnimg.cn/direct/e2500373def447f78bb63ae0bc3ed8bc.png
再将think-5.0.15放到WWW文件夹中
输入localhost/WWW/think-5.0.15/public/index.php,访问应用入口文件
https://i-blog.csdnimg.cn/direct/b0c391fae09a489a9e83d8c0d8e5506e.png
https://i-blog.csdnimg.cn/direct/ee96d60e7a314e4684b0c8b8f4859f93.png
搭建完成
创建数据库
登入mysql
https://i-blog.csdnimg.cn/direct/27b84039fce84410a1e86d3586f1a502.png
创建数据库
https://i-blog.csdnimg.cn/direct/c2d8c90fe99e4f91bf67a2720f65a091.png
修改数据库毗连文件 \phpstudy_pro\WWW\think-5.0.15\application\database.php
https://i-blog.csdnimg.cn/direct/d38079470b3846878a24e24a49ae5253.png
编写控制器——编写一个get传参,传参uesrname,默认值为a
https://i-blog.csdnimg.cn/direct/114b89513f66409e91cc603d95671e5d.png
将上面get传参得到的username插入到数据库users内里
db('users')->insert(['username' => $username]);
https://i-blog.csdnimg.cn/direct/66c5eb59c6b94073b1bd17a544fea675.png
开始探求漏洞点
输入SQL注入语句
http://localhost/think-5.0.15/public/index.php?username=inc&username=updatexml(1,concat(0x7e,user(),0x7e),1)&username=1
https://i-blog.csdnimg.cn/direct/add7d406c7a0407f9fd139a33810282d.png
注入成功
漏洞分析
官方发布的5.0.16版本更新说明中,发现此中提到了该版本修复了一个漏洞
https://i-blog.csdnimg.cn/direct/bb67f525a8df48e3a9ac9a07f0b5b652.png
查阅commit记录,发现其修改的Builder.php文件代码比力可疑 从官网的更新日志中可以看到(绿色为新添加补丁)漏洞大概率出于此处
https://i-blog.csdnimg.cn/direct/d8a79053a3c8430780935863c6c9aa69.png接着我们直接跟着上面的攻击payload看看漏洞原理。起首payload数据经过thinkphp内置方法的过滤后直接进入了$thik->builder的insert方法,以是从insert函数开始
https://i-blog.csdnimg.cn/direct/66378a3d41464a548a9269f0dc556dc8.png
https://i-blog.csdnimg.cn/direct/ff002f5235c04397ae13fe60434b4b82.png
断点下到insert语句,可以看到username传参1个数组,分别是我们输入的三个变量
[*]username=inc
[*]username=updatexml(1,concat(0x7e,user(),0x7e),1)
[*]username=1
之后走到db类中的insert方法
https://i-blog.csdnimg.cn/direct/7589f538b8b14f5883b7e3a492fa9ec6.png
这是数据库的毗连,跳出,来到insert函数
https://i-blog.csdnimg.cn/direct/8bc1c3c92e8c4dac9a2887264d4a58e6.png
此处的$data中一个数组,三个变量即
[*]username=inc
[*]username=updatexml(1,concat(0x7e,user(),0x7e),1)
[*]username=1
https://i-blog.csdnimg.cn/direct/3a0dcc67cd2044a5b2c14e93b6a0482f.png
来到sql语句,传递data,options,replace三个传参
data:一个数组三个变量,同上
options:表名table=“users”
进入builder的insert方法中
https://i-blog.csdnimg.cn/direct/065a084f7faa4dd89e097ef589a8b518.png
而 Mysql类继承于 Buider 类,即上面的this->builder->insert()最终调用的是 Builder 类的 insert方法。在 insert 方法中,我们看到其调用 parseData方法来分析并处理数据,而 parseData方法直接将来自用户的数据val进行了拼接返回。我们的恶意数据存储在val中,虽经过了 parseKey 方法处理,当丝毫不受影响,由于该方法只是用来解析处理数据的,并不是清洗数据。
进入parseData
https://i-blog.csdnimg.cn/direct/21af41aed79347c6b632da26aa54ab4f.png
data =
key = “username”
val = array(3)=
[*]array(0)=“inc”
[*]array(1)=“updatexml(1,concat(0x7e,user(),0x7e),1)”
[*]array(2)=“1”
往下滑,找到补丁处
https://i-blog.csdnimg.cn/direct/63b3c7a068c14374989c6d7affe28f73.png
https://i-blog.csdnimg.cn/direct/32d708a9ce4e4613bcab0f5945af4bf6.png
从上面可以看到直接将用户数据进行拼接,然后再回到Builder类的insert方法,直接通过替换字符串的方式,将data添补到sql语句中,造成sql注入漏洞
break跳出,得到result
https://i-blog.csdnimg.cn/direct/d0a5c5a16eaa4af4a12726feb4190a3e.png
退出insert函数
https://i-blog.csdnimg.cn/direct/fc3107cfe15f475da88f85d00dc17217.png
keys和values的处理
https://i-blog.csdnimg.cn/direct/940bba3a2b5147cca02ca0468ae4da50.png
https://i-blog.csdnimg.cn/direct/5ed239c806714947a9d574601112a9ab.png
最后进行sql的拼接,此中values便是我们的报错注入语句,以是漏洞出现,完成sql注入
https://i-blog.csdnimg.cn/direct/1a20c4879bcd4c74be543c98121b045f.png
https://i-blog.csdnimg.cn/direct/ecc499ea77a44944a86dc9b132554ce8.png
实验错误
找不到用户
https://i-blog.csdnimg.cn/direct/bf603540feca4d2990894a261e69bf6c.png
缘故原由:新建的数据库内没有创建表和用户
创建表users,内里有两列username和password
https://i-blog.csdnimg.cn/direct/f49749cfcf584c7ca6149c70004bc752.png
检察表格和内部结构
https://i-blog.csdnimg.cn/direct/20437718bc9c43ebbf495dcd6b9442b6.png
向表内插入用户
https://i-blog.csdnimg.cn/direct/309b0ddc5a474e25ac5a9ee0e03c8e32.png
检察表内用户数据
https://i-blog.csdnimg.cn/direct/53b76e8cde73427dadcb1352dd6ce1fd.png
创建用户成功
https://i-blog.csdnimg.cn/direct/fb5e7fe7041d4547a943f6c6f0651c1a.png
成功报错
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]