代码审计笔记
渗透测试
白盒:基于内部的测试,
黑盒:基于外部的测试
灰盒:既有功能点又有源代码
在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
第二个:
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
第四个:
! in_array($_REQUEST['target'], $target_blacklist)=>true
in_array($_REQUEST['target'], $target_blacklist)=>false
第五个:
Core::checkPageValidity($_REQUEST['target'])===>true
strpos() 函数查找字符串在另一字符串中第一次出现的位置
strpos(string,find)
返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE
__EOF__

本文链接:https://www.cnblogs.com/Crushz-2024/p/18390461.html
关于博主:Crushz
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)