Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)
核心目的:防御网站被入侵。
具体手段:检测到你的入侵者,然后拦截你当前访问的页面或者是跳转其他页面,或者是直接禁止你的ip访问。
日常生活中,有些网站不一定安装了WAF,但是他可能会有自己的防护策略,过滤你的恶意传参数据,例如传参不能出现union,不能出现and 1=1等等等
例1:传参了and 1=1他就拦截了,-1 =-1没有拦截。这就是匹配
例2:文件内容检测:传统一句话木马,传参任何参数都拦截,同样的传参如果不是一句话木马就不拦
1、用其他函数、写法替代 $a=get_defined_functions();$a['internal'][841]($_GET['a']); (这个是一句话木马)
2、大小写绕过(有些老WAF大小写就能绕) union => UniOn
3、替换绕过:有些过滤规则强行删除检测到的代码,然后执行 uinon => 会把关键词替换为空 uniounionn => union
4、编码绕过:网站因为功能需要有编解码,然后因为WAF不认识编码后的值然后绕过了
直接在靶场使用sql语句id=1 and 1=1,会被安全狗拦截
用base64编码后,页面回响正常
5、注释绕过:WAF有的时候会认为注释后的东西是安全的,然后可以尝试hpp
http://xxxx.com/id=1/*order by 1&id=1 and sleep(1) -- qwe*/
后面的id=1将把前面的id=1代替了,
真正执行的代码是1 and sleep(1) -- qwe
但WAF会认为/**/是注释
因此会被认为是安全的
在id=1后插入/*order by 1&id=1 order by 1 -- qwe*/
页面回响正常
6、白名单绕过:本地访问可能不拦截、管理员权限 (1、文件白名单 )
在id=1前插入/1.txt?
页面回响正常
安全狗认为不能在文本插入数据
7、垃圾数据填充:写个一大堆数据,然后传参,WAF只检测其中一部分绕过了(一般填充15w)
空格替代+(+是因为URL编码) 或者是/**/ sleep() 用 sleep/**/()代替`sleep`()
百度搜索一下就有,例如:https://www.webshell.cc/7162.html
使用方法也很简单:sqlmap.py --tamper 你要用的脚本名字 例如 base64encode.py 就可以直接使用
百度上的脚本大部分写的都是1.2.7.20的分析,但是现在已经到了1.5.8.4,新加的也不多。最多10个
tamper脚本都在sqlmap-master\tamper的目录下
下面的是编码情况(URL编码)
>>> tamper('1 AND 9227=9227')
'1%23upgPydUzKpMX%0AAND%23RcDKhIr%0A9227=9227'
"""
使用语言和版本
参考的网址
跑tamper脚本
用burp抓包
将id的值加密
priority是定义脚本的优先级的,dependencies是声明脚本适用使用范围
不过官方的脚本全部都是pass,所以这个我们可以也用pass,就是不做任何操作。 (红框里面的东西是要我们写的,其他的基本可以照抄)
def tamper(payload,**kwargs):
这个是定义了一个函数tamper,然后有两个形参,payload和kwargs
payload实际上就是指sqlmap原本要执行的代码。
kwargs可以用来设置HEAD头信息(不过SQLmap脚本中用的少)我可以在数据包里面设置为啥要用这种脚本?
if payload: (if语句,如果存在payload)
payload = payload.replace("SLEEP(", "GET_LOCK('%s'," % kb.aliasName)
replace是替换,将某某某替换为某某,例如这里SLEEP(替换为GET_LOCK('xxx',
(kb是sqlmap中存储扫描信息的库) %s他是一个虚词,真的内容是kb.aliasName
正则替换:re.sub代表正则替换。
re.sub(替换前内容,替换后,要替换值) r”” 是告诉别人这个是正则语句类似//
选择系统服务
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
陈默先生 | 0.64 | 0 | 2022-04-28 23:11:12 | 爱杰哥,爱柚子~~ |
陈默先生 | 0.64 | 0 | 2022-04-28 23:11:48 | 爱杰哥,爱柚子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.