一、sql
1:sql注入时如果union等关键字被过滤,可以使用内联注释(由于编辑器问题,相关详情请百度)可以绕过对union的过滤。
2:sql注入时,如果or被过滤,则可以使用”0^“来代替or的作用。
3:sql注入时空格被过滤而‘()’未被过滤,则可以用其代替空格将关键字包含起来。
4:sql注入时空格被过滤而”/**/“未被过滤,则可用其代替空格。
5:sql报错注入函数,extractvalue和updatexml只显示32位字符,当超出该范围时,可使用right(***,10),即从所查字段的右边开始显示10位字符。
6:Mysql在查询数据时,如果查询的是一个原数据表中不存在的数据,则会自动构建虚拟数据,如:
从而可以利用其构造一个虚拟身份来进行伪造真实身份,从而绕过审核机制。
二、SSRF
SSRF(服务端请求伪造)漏洞原理:一种构造请求, 由服务端发起请求的安全漏洞。一般情况下,攻击者无法直接访问到内网资源,但如果服务器存在SSRF漏洞,攻击者就可以利用SSRF攻击访问外网无法访问的内网资源。
漏洞成因:服务端提供了从其他服务器回去数据的功能,但没有对内网目标地址做过滤与限制。
危害:
(1)、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
(2)、攻击运行在内网或本地的应用程序(比如溢出);
(3)、对内网Web应用进行指纹识别,通过访问默认文件实现;
(4)、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等);
(5)、利用File协议读取本地文件。
漏洞利用:SSRF漏洞分析与利用
一般防御措施:
(1)、过滤返回的信息,甚至必要情况下不返回
(2)、限制http端口,仅可使用http https
(3)、检查IP是否为内网IP,进行黑名单过滤
(4)、禁止不需要的协议,gopher,ftp,file协议等
(5)、 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
产生SSRF漏洞的常见PHP函数:file_get_content() 、fsockopen() 、curl_exec()
绕过URL过滤方法:详情见:SSRF漏洞中绕过IP限制的几种方法总结
(1)、更改IP地址写法
(2)、利用解析URL所出现的问题
(3)、利用302跳转
(4)、通过各种非HTTP协议
(5)、DNS Rebinding
三、文件上传
.htaccess文件:是Apache服务器的一个配置文件,负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
利用:
SetHandler application/x-httpd-php #将其他所有类型文件均以php格式解析
因此,在某些网站只允许上传jpg文件时,可以先尝试上传.htaccess文件,再上传木马文件,最后通过蚁剑连接。
与之类似,但应用更加广泛的一个文件“.user.ini”,详情可见:.user.ini
四、php序列化
1:私有变量在序列化时会出现\00*\00,而公有变量变量则不会,同时,在PHP7.1以上版本对属性类型不敏感,public属性序列化不会出现不可见字符,就可以用public属性来绕过,实现漏洞利用。
2.private属性序列化的时候会引入两个\x00,注意这两个\x00就是ascii码为0的字符。这个字符显示和输出可能看不到,甚至导致截断,但是url编码后就可以看得很清楚了。同理,protected属性会引入\x00*\x00。此时,为了更加方便进行反序列化Payload的传输与显示,我们可以在序列化内容中用大写S表示字符串,此时这个字符串就支持将后面的字符串用16进制表示。
即:
O:11:"FileHandler":3:{S:5:"\00*\00op";i:2;S:11:"\00*\00filename";S:8:"flag.php";S:10:"\00*\00content";S:7:"oavinci";}
注:
图片转载于:[GXYCTF2019]BabySQli