代码审计笔记

渗透测试
白盒:基于内部的测试,
黑盒:基于外部的测试
灰盒:既有功能点又有源代码

在php文件包含:include\require

代码审计:
1.找关键函数
2.全文通读

文件包含:include、require
漏洞:如何控制漏洞呢------传参点
include('./inc.php');
include("$_POST[1]")

第八行:include $_REQUEST['target']
if (! empty($_REQUEST['target'])
&& is_string($_REQUEST['target'])
&& ! preg_match('/^index/', $_REQUEST['target'])
&& ! in_array($_REQUEST['target'], $target_blacklist)
&& Core::checkPageValidity($_REQUEST['target'])
) {
include $_REQUEST['target'];
exit;
}

当if语句中的条件表达式为true,则执行include代码
共有五个条件表达式
! empty($_REQUEST['target'])
&& is_string($_REQUEST['target'])
&& ! preg_match('/^index/', $_REQUEST['target'])
&& ! in_array($_REQUEST['target'], $target_blacklist)
&& Core::checkPageValidity($_REQUEST['target'])

第一个:
! empty($_REQUEST['target'])=>true
empty($_REQUEST['target'])
=>false
empty(var) 函数用于检查一个变量是否为空,为空则为true
当 var 存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE

target传参需要值,可以满足

第二个:
is_string($_REQUEST['target'])
is_string() 函数用于检测变量是否是字符串
如果指定变量为字符串,则返回 TRUE,否则返回 FALSE

可以满足

第三个:
! preg_match('/^index/', $_REQUEST['target'])=>true
preg_match('/^index/', $_REQUEST['target'])
>false
返回匹配次数。 它的值将是 0 次(不匹配)或 1 次
0--false 1---true

target传参不能以index开头的文件 index.php index.html

第四个:
! in_array($_REQUEST['target'], $target_blacklist)=>true
in_array($_REQUEST['target'], $target_blacklist)
=>false

in_array数组中找到值则返回 TRUE,否则返回 FALSE target传参值不能有$target_blacklist的值 $target_blacklist = array ('import.php', 'export.php'); target传参不能只传入import.php、export.php 可以满足

第五个:
Core::checkPageValidity($_REQUEST['target'])===>true

public static function checkPageValidity($page, array $whitelist = []) $page = $_REQUEST['target'] $whitelist===> public static $goto_whitelist = array()

strpos() 函数查找字符串在另一字符串中第一次出现的位置
strpos(string,find)

返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE


__EOF__

本文作者Crushz
本文链接https://www.cnblogs.com/Crushz-2024/p/18390461.html
关于博主:Crushz
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
posted @   Crushz  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示