exp.php的内容,存在文件包含
<?php include($_GET['lfi']); $key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")]; var_dump($_SESSION); var_dump($key); //upload_progress_ var_dump(ini_get("session.upload_progress.name")); //$_POST['PHP_SESSION_UPLOAD_PROGRESS'] ?> <form action="exp.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> <input type="file" name="file1" /> <input type="submit" /> </form>
查看phpinfo信息
当cleanup是off的情况下,构造如下数据包上传文件。
当 session.upload_progress.enabled INI 选项开启时,一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,上传进度可以在$_SESSION中获得。 当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据, 索引是 session.upload_progress.prefix 与 session.upload_progress.name连接在一起的值。 通常这些键值可以通过读取INI设置来获得
同时在D:phpstudy mp mp下生成如下文件,文件名就是sess_加上你的sessionid
查看文件内容,会写入恶意代码,这时候有个文件包含就能getshell:
当session.upload_progress.cleanup=On时,生成的文件会定时清空,不能写入恶意代码,这时候需要条件竞争。
在burp intruder中构造如下数据包,进行爆破
进行爆破,这时候在进行文件包含生成shell文件,生成shell文件。