WEB漏洞-SQL注入之查询方式及报错盲注(学习笔记)

当进行 SQL 注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是 SQL 语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL 语句大概写法也能更好的选择对应的注入语句。

#select 查询数据: 在网站应用中进行数据显示查询操作 例:select * from news where id=$id

#insert 插入数据 在网站应用中进行用户注册添加等操作 例:insert into users(id,username,password) values(30,'x','123')

#delete 删除数据 后台管理里面删除文章删除用户等操作 例:delete from users where id=30

#update 更新数据 会员或后台中心数据同步或缓存等操作 例:update users set password='123' where id=11 and username='admin3'

#order by 排序数据

一般结合表名或列名进行数据排序操作 例:select * from news order by $id 例:select id,name,price from news order by $order

SQL 注入报错盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面(因为像insert、delete等查询语句即使执行成功,也不会回显。此外,网站的前端页面显示也会限制)。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:

基于报错的 SQL 盲注-报错回显(首选)

报错型注入则是利用了MySQL的第8652号bug :Bug #8652 group by part of rand() returns duplicate key error来进行的盲注,使得MySQL由于函数的特性返回错误信息,进而我们可以显示我们想要的信息,从而达到注入的效果:在rand()和group by同时使用到的时候,可能会产生超出预期的结果,因为会多次对同一列进行查询

#通过floor报错注入

例子:pikachu靶场 ------' or(select 1 from(select count(),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)2))x from information_schema.tables group by x)a) or ' 其中下划线就是我们可以注入的语句,通过更改它获得不同数据

 

#通过update语句报错 #通过ExtractValue报错

基于时间的 SQL 盲注-延时判断(最次选)

#if型: 语法: if(condition,A,B) 如果condition满足返回A否则返回B

 

#sleep型:--------- and sleep(x) 结果延迟x秒显示,但是不显示查询内容

#if和sleep结合---判断数据库名是否为pikachu

 

所以数据库名即为pikachu if中condition还可以设置成数据库长度

基于布尔的 SQL 盲注-逻辑判断(次选)

http://192.168.43.135/SqliLabs/Less-5/?id=1 ' and left(version(),3)='5.5'--+)

上面的语法判断了数据库类型是否为5.5.x版本的

 显示为正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值