欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

------ 已携带 -------BUUCTF: [Anshun Cup 2019] easy_serialize_php 1 (提取,字符转义 替代会话反序列化 ~. ~ )

最编程 2024-03-30 19:51:02
...
<?php $function = @$_GET['f']; function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i';//这变成了一个正则表达式了哦 return preg_replace($filter,'',$img);//看一下img里面有没有filter的东西,有的话,换成空格 //其实这里要敏感一些,替换成空格了,字符数量减少,可能会存在字符逃逸的现象发生 } if($_SESSION){ unset($_SESSION); } $_SESSION["user"] = 'guest'; $_SESSION['function'] = $function;//我传入的参数值 //可能有session的反序列化,一般默认是php引擎 extract($_POST);//post数组的变量覆盖 //这里应该可以执行很多函数,比如call_user_func()整个变态函数 if(!$function){ echo '<a href="index.php?f=highlight_file">source_code</a>'; } if(!$_GET['img_path']){ $_SESSION['img'] = base64_encode('guest_img.png');//没有传入的话就是这个 }else{ $_SESSION['img'] = sha1(base64_encode($_GET['img_path']));//传入的话,是这个 } $serialize_info = filter(serialize($_SESSION));//把整个session数组给序列化了,然后进行filter过滤 if($function == 'highlight_file'){ highlight_file('index.php'); }else if($function == 'phpinfo'){ eval(