常见的漏洞以及渗透工具使用

一、渗透工具

一、sqlmap

1.判断是否存在注入

假设目标注入点是http://192.168.1.104/sql1/Less-1/?id=11

判断命令

sqlmap.py-u http://192.168.1.104/sql1/Less-1/?id=1

还有一种情况,当注入点后面的参数大于等于两个时,需要加双引号,如下所示。

sqlmap.py-u"http://192.168.1.104/sql1/Less-1/?id=1&uid=2"

2.判断文本中的请求是否存在注入
从文件中加载HTTP请求,SQLMap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie、POST数据等),txt文件中的内容为Web数据包。

判断是否存在注入的命令如下所示,-r一般在存在cookie注入时使用。
sqlmap.py -r desktop/1.txt

3.查询当前用户下的所有数据库

sqlmap.py-u http://192.168.1.104/sql1/Less-1/?id=1——dbs --dbs缩写为-D xxx,指在xxx数据库中继续查

4.获取数据库中的表名
sqlmap.py-u “http://192.168.1.7/sql/union.php?id=1”-D dkeye——tables -D指定一个具体数据库 --tables缩写成-T

5.获取表中的字段名

sqlmap.py-u “http://192.168.1.7/sql/union.php?id=1”-D dkeye-Tuser_info—-columns

–columns缩写为-C

6.获取字段内容
该命令是查询完字段名之后,获取该字段中具体的数据信息

sqlmap.py -u “http://192.168.1.7/sq/union.php?id=1” -D dkeye -Tuser_info-C username, password—-dump

7.获取数据库的所有用户
sqlmap.py -u “http://192.168.1.7/sql/union.php?id=1”——users

8.获取数据库用户的密码
如果当前用户有读取包含用户密码的权限,SQLMap会先列举出用户,然后列出Hash,并尝试破解。
sqlmap.py -u “http://192.168.1.7/sql/union.php?id=1”——passwords

9.获取当前网站数据库的名称
sqlmap.py -u “http://192.168.1.7/sql/union.php?id=1”——current-db

10.获取当前网站数据库的用户名称
sqlmap.py -u “http://192.168.1.7/sql/union.php?id=1”——current-user

11.进阶参数

–level 5 探测等级(1~5,不加数字默认是1)

–is-dba 查看当前用户是否为数据库管理员权限,若是返回true

–roles 查看数据库用户的角色 -U指定用户(仅适用于oracle)

–referer: HTTP Referer头
SQLMap可以在请求中伪造HTTP中的referer,当——level参数设定为3或3以上时,会尝试对referer注入。可以使用referer命令来欺骗。
**–sql-shell:**运行自定义SQL语句,用于执行指定的SQL语句
sqlmap.py -u “http://192.168.1.7/sql/union.php?id=1”——sql-shell

–os-cmd,–os-shell: 运行任意操作系统命令

**–file-read:**读取数据库服务器文件

**–file-write–file-dest:**上传文件到数据库服务器中

SQLmap自带绕过tamper脚本,对数据做修改来绕过waf等设备

​ sqlmap.py XXXXX——tamper “模块名”

12.注入

1)基于布尔类型的盲注

​ 可根据返回页面判断条件真假的注入

2)基于时间的盲注

不能根据页面返回的内容判断任何信息,需要用条件语句查看时间延迟语句是否执行来判断

3)基于报错的盲注

​ 页面会返回错误信息

4)联合查询注入

​ 使用union注入

5)堆查询注入

​ 同时执行多条语句

二、burp suit

集成化的渗透测试工具

1.Proxy

代理模式,拦截、查看、修改所有在客户端与服务器之间传输的数据

​ Forward表示将拦截的数据包或修改后的数据包发送至服务器端。

​ Drop表示丢弃当前拦截的数据包。

​ lnterception is on表示开启拦截功能,单击后变为Interception is off,表示关闭拦截功能。

​ 单击Action按钮,可以将数据包进一步发送到Spider、Scanner.Repeater、Intruder等功能组件做进一步的测试,同时也包含改变数据包请求方式及其body的编码等功能。

​ Raw主要显示Web请求的raw格式,以纯文本的形式显示数据包,包含请求地址、HTTP协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等,可以通过手动修改这些信息,对服务器端进行渗透测试。
​ Params主要显示客户端请求的参数信息,包括GET或者POST请求的参数、cookie参数。可以通过修改这些请求参数完成对服务器端的渗透测试。
​ Headers中显示的是数据包中的头信息,以名称、值的形式显示数据包。. Hex对应的是Raw中信息的二进制内容,可以通过Hex编辑器对请求的内容进行修改,在进行00截断时非常好用

2.Spider

Spider的蜘蛛爬行功能可以帮助我们了解系统的结构,其中Spider爬取到的内容将在Target中展示界面左侧为一个主机和目录树,选择具体某一个分支即可查看对应的请求与响应。

3.Decoder

Decoder的功能比较简单,它是Burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换。

三、Nmap

1.常用用法

1)扫描单个目标地址

nmap 192.168.0.100

2)扫描多个目标地址

nmap 192.168.1.100 192.168.1.105

3)扫描一个范国内的目标地址

nmap 192.168.0.100-200

4)扫描目标地址所在网段

nmap 192.168.0.100/24

表示0.1~0.255

5)扫描主机列表中targets.txt的所有目标地址

nmap-il C:\target.txt

6)扫描除了某个目标/某一文件中目标地址之外的目标地址

nmap 192.168.0.100/24-exclude 192.168.0.105

不对105扫描

nmap 192.168.0.100/24-excludefile C:target.txt

7)扫描特定端口

nmap 192.168.0.100 -p 21,22

8)对目标进行路由跟踪

nmap–traceroute 192.168.0.105

9)扫描目标地址所在C段的在线状况

nmap-sP 192.168.0.100/24

10)对目标服务版本的检测

nmap-sV192.168.0.105

11)探测目标的防火墙状态

nmap-sF -T4 192.168.0.105

12)识别目标地址的·操作系统指纹识别

nmap -O192.168.0.105

2.脚本

脚本默认存在/xx/nmap/scripts文件下

1)弱口令检测

nmap–script=auth 192.168.0.105

2)暴力破解(对数据库、smb、snmp等)

nmap–script=brute 192.168.0.105

3)扫描常见漏洞

nmap–script=vuln 192.168.0.105

4)应用服务扫描

nmap–script=realvnc-auth-bypass 192.168.0.105

5)探测局域网内更多服务开启状况

nmap -n -p 445–script=broadcast 192.168.0.105

6)whois解析

nmap-script external baidu.com

二、SQL注入

1.存在条件

1)参数用户可控:前端传给后端的参数内容是用户可以控制的

2)参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询

A

​ select * from users where id=1 and 1=1
因为1=1为真,且where语句中id=1也为真,所以页面会返回与id=1相同的结果。当传入的ID参数为and 1=2时,由于1=2不成立,所以返回假,页面就会返回与id=1不同的结果。

B

​ 5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表名;5.0 以下是多用户单操作,5.0 以上是多用户多操做。

5.0以上:默认存放information_schema,该库包含三个SCHEMATA、TABLES、COLUMNS

SCHEMATA表存储该用户创建的所有数据库的库名 ,记录数据库库名的字段名是SCHEMA_NAME

TABLES表存储该用户创建的所有数据库的库名 和表名,记录数据库库名的字段名是TABLE_SCHEMA和TABLE_NAME

COLUMNS表存储该用户创建的所有数据库的库名 和表名和字段名,记录数据库库名的字段名是TABLE_SCHEMA和TABLE_NAME和COLUMN_NAME

C

注释符 #或–空格或/**/

内联注释 /! code/ , /*****! UNION*/

2.攻击方式

1)Union注入

Union注入攻击的测试地址:http://www.ccctf.cn/union.php?id=1。

在URL后添加一个单引号,再访问,返回页面与id=1不同

访问id=1 and 1=1,由于and 1=1为真,所以返回页面与id=1相同的结果,若访问id=1 and 1=2,由于and 1=2为假,页面不同

order by 1-99查询数据表的字段数量 看和id=1的页面是否相同 id+order+by+3

union语句:union select 1,2,3

2)Boolean注入

用单引号判断,用访问id=1’and 1=1%23,id=1’and 1=2%23,发现返回的结果分别是yes和no,更改ID的值,发现返回的仍然是yes或者no,由此可判断,页面只返回yes或no,而没有返回数据库中的数据,所以此处不可使用Union注入。此处可以尝试利用Boolean注入

Boolean注入是指构造SQL判断语句,通过查看页面的返回结果来推测哪些SQL判断条件是成立的,以此获取数据库中的数据。

我们先判断数据库名的长度’ and length (database () ) >=1——+,看返回的yes和no,在判断数据库名长度

接着,使用逐字符判断的方式获取数据库库名。数据库库名的范围一般在a z、09之内,可能还有一些特殊字符,这里的字母不区分大小写。逐字符判断的SQL语句为:
’ and substr (database () , 1,1)=‘t’——+ 判断直到返回yes
substr是截取的意思,其意思是截取database ()的值,从第一个字符开始,每次只返回一个。

3)报错注入

url添加单引号而报错误信息页面,可以利用报错注入

报错注入有多种格式,此处利用函数updatexml ()演示SQL语句获取user ()的值,SQL语句如下所示。
’ and updatexml (1,concat (Ox7e,(select user () ),0x7e), 1)——+
其中0x7e是ASCII编码,解码结果为~,如图4-31所示。

然后尝试获取当前数据库的库名,语句如下所示。’ and updatexml (1,concat (Ox7e,(select database () ) ,Ox7e),1)——+

继续利用查询

4)时间注入

加单引号访问,返回no

与Boolean注入的不同之处在于,时间注入是利用sleep ()或benchmark ()等函数让MySQL的执行时间变长。

时间盲注多与IF(expr1,expr2,expr3)结合使用,此if语句含义是:如果expr1是TRUE,则IF()的返回值为expr2;否则返回值则为expr3。

所以判断数据库库名长度的语句应为:
if (length (database () ) >1,sleep (5),1)
上面这行语句的意思是,如果数据库库名的长度大于1,则MySQL查询休眠5秒,否则查询1。

5)堆叠查询注入

堆叠查询可以执行多条语句,多语句之间以分号隔开。

堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己要执行的语句。首先访问id=1’,页面返回MySQL错误,再访问id=1’%23,页面返回正常结果。这里可以使用Boolean注入、时间注入,也可以使用另外─种注入方式——堆叠注入。
堆叠注入的语句为:
';select if (substr (user () ,1,1) =‘r’, sleep (3),1)%23从堆叠注入语句中可以看到,第二条SQL语句(select if (substr (user
(),1,1) =‘r’,sleep (3),1) %23)就是时间盲注的语句

6)二次注入

二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。

7)宽字节注入

访问id=1’,程序并没有报错,反而多了一个转义符(反斜杠)。

当数据库的编码为GBK时,可以使用宽字节注入,宽字节的格式是在地址后先加一个%df,再加单引号,因为反斜杠的编码为%5c,而在GBK编码中,%df%5c是繁体字“连”,所以这时,单引号成功逃逸,报出MySQL数据库的错误。

8)cookie注入

抓包在burpsuit查看,修改cookie中的id=1为id=1’,然后再次访问该URL,发现页面返回错误。接下来,分别修改cookie中id=1为id=1 and 1=1和id=1 and 1=2,再次访问,判断该页面是否存在SQL注入漏洞,页面返回不同,得出cookie中的参数ID存在SQL注入的结论。

9)base64注入

在base64注入页面中,程序获取GET参数ID,利用base64_decode ()对参数ID进行base64解码,然后直接将解码后的$id拼接到select语句中进行查询,通过while循环将查询结果输出到页面。

10)XFF注入

通过Burp Suite抓取数据包容,可以看到HTTP请求头中有一个头部参数
X-Forwarded-for。X-Forwarded-For简称XFF头,它代表客户端真实的IP,通过修改X-Forwarded-for的值可以伪造客户端IP,将X-Forwarded-for设置为127.0.0.1,然后访问该URL,页面返回正常。

设置127.0.0.1’以及and语句尝试是否报错,再用之前语句判断。

3.注入绕过

1)大小写绕过

关键字被拦截,修改大小写的方式绕过拦截。

2)双写绕过

看注入and语句等与返回页面的差别,若过滤关键字,就尝试双写绕过。

3)编码绕过

用单引号语句判断,若报错,在尝试and语句,发现and一词被过滤,尝试url全编码的方式过滤

4) 内联注释绕过

访问id=1’,发现页面报出MySQL错误,接着访问id=1 and 1=1和id=1 and1=2时,发现页面提示“no hack”,即关键字被拦截。尝试使用内联注释绕过

访问id=1/! and/1=1时,查看页面不同之处。

4.修复建议

  1. 过滤危险字符

采用正则表达式匹配union等关键字,若匹配到,就退出程序

  1. 使用PDO预编译语句

不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。

三、xss

跨站脚本(Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)
是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。恶意用户利用XSS代码攻击成功后,可能层到很高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

1.分类

1)反射型

非持久型xss,具有一次攻击

攻击方式:像电子邮件等方式

2)存储型

持久型xss,攻击脚本存放在目标服务器的数据库或文件中,有很高的隐蔽性

攻击方式:论坛、博客、留言板

3)DOM型

​ DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。
​ 特殊类型的反射型XSS,是基于DOM文档对象模型的一种漏洞。
​ HTML的标签都是节点,而这些节点组成了DOM的整体结构——节点树。通过HTML DOM,树中的所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。

2.编码绕过

1)JS编码

●三个八进制数字,如果个数不够,在前面补0,例如“e”的编码’为"\145"。
●两个十六进制数字,如果个数不够,在前面补0,例如“e”的编码为"\x65"。
●四个十六进制数字,如果个数不够,在前面补0,例如“e”的编码为"\u0065"。
●对于一些控制字符,使用特殊的C类型的转义风格(例如 和\r)。

2)HTML实体编码

命名实体:以&开头,以分号结尾的,例如“<”的编码是“<”。
字符编码:十进制、十六进制ASCII码或Unicode字符编码,样式为“&#数值;”,例如“<”可以编码为“<”和“<”。

3)URL编码

这里的URL编码,也是两次URL全编码的结果。如果alert被过滤,结果为%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34。
在使用XSS编码测试时,需要考虑HTML渲染的顺序,特别是针对多种编码组合时,要选择合适的编码方式进行测试。

URL编码遵循下列规则:

每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。

任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。

​ 其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。

3.修复建议

1)过滤输入的数据,包括"’" “” “<” “>” "on*"等非法字符。

2)对输出数据进行编码转换,包括HTML实体编码、javascript编码等。

4.XSS常用的测试语句有:

<svg onload=alert(1)>
<script> alert (1) </script>
<img src=x onerror=alert (1) >
<a href=javascript: alert (1) >

四、CSRF

​ CSRF (Cross-site request forgery,跨站请求伪造)也被称为One ClickAttack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)也难以防范,所以被认为比XSS更具危险性。

1.存在条件

目标用户已经登录了网站,能够执行网站的功能

目标用户访问了攻击者构造的url

2.漏洞利用

1)蠕虫攻击

2)刷SEO流量

3.修复建议

1)Referer验证

若referer是以自己的网站开头的域名,则说明该请求来自网站自己,是合法的。若referer是其他网站域名或空白,就可能是csrf攻击,那么服务器应拒绝请求,但是此方法存在被绕过的可能。

2)请求中加入不能伪造的信息,比如token,若token有误,则会拒绝该请求。

四、SSRF

SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。

原理:SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

1.攻击方式

1)对所在内网,本地进行端口扫描,获取一些服务的banner信息。

2)攻击运行在内网,本地的应用程序

3)对内网Web应用进行指纹识别,识别企业内部的资产信息

4)攻击内外网的Web应用,主要是使用http get请求就可以实现的攻击(比如struts2、sqli)

5)利用file协议读取本地文件

2.修复建议

1)限制请求端口为Web端口,只允许访问http和https

2)限制不能访问的内网的ip,以防止对内网进行攻击

3)屏蔽返回信息

五、文件上传

利用webshell(网页后门)恶意脚本控制网站

1.绕过方式

1)js限制绕过

​ A 使用浏览器的插件,删除检测文件后缀的JS代码,然后上传文件即可绕过。

​ B 首先把需要上传文件的后缀改成允许上传的,如jpg、png等,绕过JS的检测,再抓包,把后缀名改成可执行文件的后缀即可上传成功。

2)文件后缀绕过

文件后缀绕过攻击是服务端代码中限制了某些后缀的文件不允许上传,但是有些Apache是允许解析其他文件后缀的,例如在httpd.conf中,如果配置有如下代码,则能够解析php和phtml文件。

3)文件类型绕过

如果服务端代码是通过Content-Type的值来判断文件的类型,那么就存在被绕过的可能,因为Content-Type的值是通过客户端传递的,是可以任意修改的。所以当上传一个php文件时,在Burp Suite中将Content-Type修改为image/jpeg,就可以绕过服务端的检测。

4)文件截断绕过

截断类型:PHP %00截断。
截断原理:由于00代表结束符,所以会把00后面的所有字符删除。
截断条件: PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态。

在上传文件时,服务端将GET参数jieduan的内容作为上传后文件名的第一部分,然后将按时间生成的图片文件名作为上传后文件名的第二部分。修改参数jieduan为1.php%00.jpg,文件被保存到服务器时,%00会把"jpg”和按时间生成的图片文件名全部截断,那么文件名就剩下1.php,因此成功上传了WebShell脚本。

5)竞争条件攻击

—些网站上传文件的逻辑是先允许上传任意文件,然后检查上传的文件是否包含WebShell脚本,如果包含则删除该文件。

这里存在的问题是文件上传成功后和删除文件之间存在一个短的时间差(因为要执行检查文件和删除文件的操作),攻击者就可以利用这个时间差完成竟争条件的上传漏洞攻击。

2.修复建议

1)白名单判断文件后缀名是否合法

2)对上传的文件进行重命名

六、暴力破解

1.修复建议

1)限制用户登陆次数

2)限制ip登录次数,超过就锁定

七、命令执行

应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用
system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

常用的管道符:

windows支持的:

“|”:直接执行后面的语句

“||”:若前面执行语句执行出错,则执行后面的语句。

“&”:前面语句为假则执行后面语句,前面语句可真可假

“&&”:前面语句为假则不执行后面语句,前面只能为真

linux:

“;”:前后语句都执行

“|”:直接执行后面的语句

“||”:若前面执行语句执行出错,则执行后面的语句。

“&”:前面语句为假则执行后面语句,前面语句可真可假

“&&”:前面语句为假则不执行后面语句,前面只能为真

1.修复建议

1)尽量不要使用命令执行函数

2)客户端提交的变量进行过滤检测

3)动态函数使用之前,确保函数的安全性,确保使用的是指定的函数之一

4)PHP中的危险函数尽量不要使用

八、逻辑漏洞

逻辑漏洞指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整。

1.常见类型

1)支付订单

在支付订单时,可以篡改价格为任意金额;或者可以篡改运费或其他费用为负数,导致总金额降低。

2)越权访问

通过越权漏洞访问他人信息或者操纵他人账号。

A 水平越权

相同级别(权限)的用户或者同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞,可能会造成大批量数据的泄露,严重的甚至会造成用户信息被恶意篡改。

B 垂直越权

不同级别之间的用户或不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能。

3)重置密码

在重置密码时,存在多种逻辑漏洞,比如利用session覆盖重置密码、短信验证码直接在返回的数据包中等。

4)竞争条件

竞争条件常见于多种攻击场景中,比如前面介绍的文件上传漏洞。

九、XXE漏洞

XML外部实体注入(XML External Entity)简称XXE漏洞,XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

1.修复建议

1)禁止使用外郅实体

2)过滤用户提交的XML数据,防止出现非法内容

十、WAF

1.WAF类型

1)软件型WAF

以软件形式装在所保护的服务器上的WAF,由于安装在服务器上,所以可以接触到服务器上的文件,直接检测服务器上是否存在WebShell、是否有文件被创建等。

2)硬件型WAF

以硬件形式部署在链路中,支持多种部署方式,当串联到链路中时可以拦截恶意流量,在旁路监听模式时只记录攻击不进行拦截。

3)云WAF

一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将认为无害的请求报文再发送给实际网站服务器进行请求,可以说是带防护功能的CDN。

4)网站系统内置WAF

网站系统内置的WAF也可以说是网站系统中内置的过滤,直接镶嵌在代码中,相对来说自由度高。

一般有:

​ 输入参数强制类型转换(intval等)。

​ 输入参数合法性检测。

​ 关键函数执行(SQL执行、页面显示、命令执行等)前,对经过代码流程的输入进行检测。

​ 对输入的数据进行替换过滤后再继续执行代码流程(转义/替换掉特殊字符等)。

2.WAF判断

1)SQLMap模块

使用SQLMap中自带的WAF识别模块可以识别出WAF的种类,但是如果所安下面装的WAF并没有什么特征,SQLMap就只能识别出类型是Generic。

sqlmap.py -u “http://xxx.com”——identify-waf——batch

2)手工判断

直接在相应的网站的URL后面加上最基础的测试语句,如:union select 1,2,3%23,并且放在一个不存在的参数名中,若触发了waf防护,则网站存在waf。

3.WAF绕过

1)大小写混合

2)URL编码

waf只进行一次解码,而目标系统的代码进行额外的URL解码,即可进行绕过。

3)关键字替换

waf采用替换或删除select/union这类敏感关键词的时候,如果只匹配一次则很容易绕过

4)多参数请求拆分

多参数请求时,可将注入语句分割插入

5)HTTP参数污染

指当同一参数出现多次,不同中间件会解析为不同的结果。

6)生僻函数

使用生僻函数替代常见函数

7)注入参数到cookies

某些程序员在代码中使用 R E Q U E S T 获 取 参 数 , 而 _REQUEST获取参数,而 REQUEST_REQUEST会依次从GET/POST/cookie中获取参数,如果WAF只检测了GET/POST而没有检测cookie,可以将注入语句放入cookie中进行绕过。

8)使用注释

注释在截断SQL语句中用的多,在绕过时主要使用其替代空格(/任意内容****/),适用于检测过程中没有识别注释或者替换掉了注释的waf。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值