16、SQL注入之查询方式及报错盲注

您所在的位置:网站首页 查p站id的网站 16、SQL注入之查询方式及报错盲注

16、SQL注入之查询方式及报错盲注

2023-07-13 00:38| 来源: 网络整理| 查看: 265

目录 前言SQL注入报错盲注补充: Access暴力猜解不出的问题?

前言

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

对方在执行SQL语句之后,结果在显示的时候,他有一些显示上的代码,如果这个代码使用不当,也会导致无回显。

select 查询数据 在网站应用中进行数据显示查询操作 例: select * from news where id=$id insert 插入数据 在网站应用中进行用户注册添加等操作 例: insert into news(id,url,text) values (2,'x','$t') delete 删除数据 后台管理里面删除文章删除用户等操作 例: delete from news where id=$id order by 排序数据 一般结合表名或列名进行数据排序操作 例: select * from news order by $id 例: select id,name,price from news order by $order

重点理解: 我们可以通过以上查询方式与网站应用的关系、注入点产生地方或应用猜测到对方的SQL查询方式

网站用户注册,我们输入相关的账号密码和一些相关信息之后,我们点击立即注册,这个网站就会注册成功一个账号,注册成功一个账号后,就可以用这个账号登录。这个用户注册的功能,就是将对方的信息写到数据库里面,这个操作明显就是添加和插入的操作。就相当于我们测试的是Insert查询方式下的注入

功能不同,对应的语句查询方式也会不同

在网站中,看到相应的功能,在这个时候,我们要测试这个功能是否存在注入点,你应该要提前知道这个功能会涉及到的查询方式

每个数据库他的查询方式的写法都会有很多不同

SQL注入报错盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:

基于布尔的SQL盲注-逻辑判断 regexp、like、ascii、left、ord、mid (不需要回显就能够判断的)

基于时间的SQL盲注-延时判断 if、sleep (不需要回显就能够判断的)

基于报错的SQL盲注-报错回显(强制性报错) floor、updatexml、extractvalue https://www.jianshu.com/p/bc35f8dd4f7c

是那种盲注是由网站决定的,我们优先选择报错回显,这是最简单的,其次是逻辑判断,最后才是延时判断。因为这三种判断,从效率来看,报错回显是最快的,逻辑判断复杂点,延时判断是最慢的。它根据一个网站回显的时间来判断

参考: like 'ro%' #判断ro或ro...是否成立 regexp '^xiaodi[a-z]' #匹配xiaodi及xiaodi...等 if (条件,5,0) #条件成立 返回5 反之 返回o sleep(5) #SQL语句延时执行5秒 mid(a,b,c) #从位置b开始,截取a字符串的c位 substr(a,b,c) #从b位置开始,截取字符串a的c长度left(database(),1),database() #left(a,b)从左侧截取a的前b位 length(database())=8 #判断数据库database()名的长度 ord=ascii ascii(x)=97 #判断x的ascii码是否等于97 Payload: pikachu insert username=x' 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 xia) or' &password=xiaodi&sex=%E7%94%B7&phonenum=13878787788&email=wuhan&add-hubei&submit=submit

insert语句的特性决定了,它的回显是系统上的是否执行成功、是否执行失败,有没有错误

select注入决定了它是有回显注入的,有回显数据就能回显;针对无回显的,我们要使用盲注,解决它无回显

sql语句的查询方式是决定无回显的因素之一,因为网站对查询完的数据没有进行显示操作的话,也一样会造成无回显,这种情况也是另外一种情况 在这里插入图片描述 在这里插入图片描述 0x7e这一串代码经常会在注入工具里面出现,我们工具在注入的时候,会使用0x7e标出我们想要的数据,方便工具把它取出来。

其实是为了开发者在注入工具里面提取出数据,因为它不会向人工那样去上面看一下 Insert和update它的写法是一样的,无非是代码的实现效果上不一样

pikachu update sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky’ or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '&email=wuhan&submit=submit sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky' or updatexml(1,concat(0x7e,(version())),0) or'&email=wuhan&submit=submit sex=%E7%94%B7&phonenum=13878787788&add=Nicky' or extractvalue(1,concat(0x7e,database())) or'&email=wuhan&submit=submit

加号对应着空格

我们如果要进行注入分析的时候,面对对方某个网站的地方,要清楚它是什么类型的查询方式注入,另外我们要知道这种查询方式是有回显还是没回显

12种报错注入类型基本上包含在sqlmap这种工具里面去了,大家不必去了解这种东西,这些都是SQL语句的写法,我们可以不需要去了解为什么要这么写,你只要知道它是用什么方式去玩就可以了。

各个数据库的函数都是一样的,只是写法不一样而已,具体的查一下资料都能查的出来。不要去纠结这个事情,其它数据库的函数无非就是名字不一样而已,知道作用就可以了。

延时注入可以进行对数据库的猜解,它不需要我们回显,因为它回显的结果就是根据我们页面的加载时间

我们在实际的工作当中是不推荐我们用延时去判断,因为每个网站它返回的时间是不一样的,有的网站打开非常快,有的网站打开非常慢。延时有时候会受到网络速度的影响,所以会有判断上的一些小问题

要经过对比才能知道是否存在延时,所以要调一个能够判断的时间,例如10s

如何猜解出数据库名,先判断它的长度,然后再根据第一位进行猜解,数据库不可能有特殊符号,一般是由字母或加数字组成,一位位的猜下去就可以了

用手工去猜解肯定是很慢的,一般这种注入会用工具和脚本去跑,手工只是了解它的原理,便于我们再注入不成功的时候,去研究那一步有问题

用工具去跑,它判断和115判断是没有区别,如果我们写字符串a-z,0-9,还有一些特殊字符,用编程去实现的话,我们是不是要把所有字符去遍历一遍,依次写到payload里面去猜测,但是如果是数字的话,一个for循环就完事了。

ascii十进制是从0-127。

有些网站就是好玩,明明查询出来的数据,它能够显示,但它就是不显示。不回显的情况下只能采取盲注。

补充: Access暴力猜解不出的问题?

Access偏移注入:解决列名获取不到的情况 表、列名不知道的情况:查看登陆框源代码的表单值或观察URL特征等也可以针对表或列获取不到的情况;这不是百分百的,只是说这是一种方法。 如果靠以上的方法还是搞不出来,那就只能靠字典乱搞了

http://192.168.64.136:81/Production/PRODUCT_DETALasp?id=1513 UNION SELECT 1,2,3,4,5.6,7,8,9 10,11,12,13,14,15,16,* from admin

星号,可代替的字符串

一级偏移语句: 127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id) 如果你发现,上面查看了网页源码也爆不出数据,请用以下方法: 二级偏移语句: 127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)

Access偏移注入参考文章:https://www.cnblogs.com/02SWD/p/15811580.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3