SQL注入漏洞

文章详细阐述了SQL注入漏洞的几种常见形式,包括联合查询注入、报错注入、布尔盲注、延迟注入、DNS外带、堆叠注入和二次注入,以及宽字节注入的情况。这些漏洞主要由于应用程序对用户输入过滤不严,导致恶意代码被执行,可能造成数据泄露和系统安全风险。
摘要由CSDN通过智能技术生成

用户可以通过任何可输入的点输入构造的恶意代码,若应用程序对用户的输入过滤不严,一旦将输入的恶意代码作为命令或查询的一部分发送到了解析器,可能会导致注入漏洞的产生。

原始访问URL注入恶意URL 

(1)联合查询:合并多个查询的结果的合集。

{i}前提条件:1.存在注入点,即未被过滤。2.有显示位,即能回显结果。3.两表列数相同,即order by 和union select去判断列数。4.数据类型相同

(2)报错注入:通过构造特定的SQL语句,让攻击者想要查询的信息(如数据库名、版本号、用户名等)通过页面面的错误提示回显出来(主用于暴表和暴库)

{i}前提条件:Web应用程序未关闭数据库报错函数,对于一些SQL语句的错误直接回显在页面上

{ii}后台未对一些具有报错功能的函数(如extractvalue、updatexml等)进行过滤

(3)布尔盲注:页面没有回显字段(不支持联合查询),且web页面返回True或者false,构造SQL语句,利用and,or等关键字来其后的语句true、false使web页面返回true或者false,从而达到注入的目的来获取信息的一种方法,没有错误提示,也没有回显,但是输入错误的话页面会有反应,也就是说只有true和false

例如 : {i}sql-labs /less-7 它只有两种提示 所以可以用布尔盲注

{ii}playload:and length(database()) =8 --+ /判断数据库名长度 是否等于8(返回错,或者开启页面)

使用顺序:[1]求当前数据库长度 [2]求当前数据库表的ASCII [3]求当前数据库中表的个数 [4]求当前数据库中其中一个表的长度 [5]求当前数据库中其中一个表名ASCII [6]求列名的数量 [7]求列名的长度 [8]求列名的ASCII [9]求字段的数量 [10]求字段内容的长度 [11]求字段内容对应的ASCII

(4)延迟注入:是盲注类型的一种,很多网站会屏蔽显错,不会返回任何有价值的信息,尝试用sleep,页面出现延时刷新,这个时候很可能存在延时注入,我们简单的讲,就是通过sleep函数注入让页面延时,就可以尝试延时注入;这里与布尔盲注很相似(可参考另外一篇文章-布尔盲注),都是利用ascii函数一个一个转换成数字,然后单个去翻译获取信息,与布尔盲注不同之处在于,延时盲注返回页面相同,通过返回页面不能判断其正确性,需要通过响应时间判断正确性。

(5)DNS外带:就是将DNS解析记录到DNS日志平台的解析记录上,常用网页无回显的时候可以利用查找【比如SQL注入盲注、Log4j漏洞验证、SSRF网页无回显漏洞验证】

(6)堆叠注入:Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。

(7)二次注入:是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。

那为什么需要二次注入,因为在字符型注入一般都有单引号的存在,首先构造注入闭合单引号,再通过第二次构造语句,在第一次注入的基础上进行注入。

(8)宽字节注入:在使用PHP连接MySQL的时候,当设置“set character_set_client = gbk”时会导致一个编码转换的问题,也就是我们熟悉的宽字节注入,当存在宽字节注入的时候,注入参数里带入%DF%27,即可把(%5C)吃掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值