攻防世界ics-07 wp

攻防世界ics-07 wp_第1张图片打开容器,看到view-source,点进去可以看到源码

 
 
something wae wrong ! 
"); if($result){ echo "id: ".$result->id."
"; echo "name:".$result->user."
"; $_SESSION['admin'] = True; } ?>

以上是source里面的三段php代码
先看第一段:如果page存在,且不为index.php,就文件包含flag.php
第二段:如果$_SESSION[‘admin’]存在,就能post传con和file ,可以上传一句话了。

第三段:绕过if里的语句,就可以使$_SESSION[‘admin’]为true

大概思路就出来了,先使result为true,再getshell

if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9')
floatval()用于获取变量的浮点数值,不能用于数组或对象
这里存在弱类型比较,floatval()后的值为浮点型,只要等于1,就可与字符型‘1’匹配,substr要求最后一位是9,那么只要传入1+任意字符+9即可绕过
攻防世界ics-07 wp_第2张图片接下来就可以进行post传参了,需要对

if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename))

进行绕过,改正则表达式表示匹配最后一个点以及后面的后缀,如果直接传a.php无法成功,但传a.php/.即可成功绕过

payload:file=a.php/.&con=

由于chdir(‘uploaded’)改变目录为uploaded,又加上backup/a.php拼接,所以目录为最终的上传目录为uploaded/backup/a.php
验证一下有没有传上去

攻防世界ics-07 wp_第3张图片验证成功后直接蚁剑连接即可直接查看flag
攻防世界ics-07 wp_第4张图片

你可能感兴趣的:(攻防世界ics-07 wp)