return true;
}
echo “you can’t see it”;
return false;
}
}
if (! empty(KaTeX parse error: Expected 'EOF', got '&' at position 19: …QUEST['file']) &̲& is_string(_REQUEST[‘file’])
&& emmm::checkFile($_REQUEST[‘file’])
) {
include $_REQUEST[‘file’];
exit;
} else {
echo “
<img src=“https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg” />”;
}
?>
访问hint.php
只有一串文字,考虑flag很有可能就在这个‘ffffllllaaaagggg’文件中
回到source.php代码中
分析这段有包含命令的代码:include $_REQUEST[‘file’];
if (! empty(KaTeX parse error: Expected 'EOF', got '&' at position 19: …QUEST['file']) &̲& is_string(_REQUEST[‘file’])
&& emmm::checkFile($_REQUEST[‘file’])
) {
include $_REQUEST[‘file’];
exit;
} else {
echo “
<img src=“https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg” />”;
}
!empty($_REQUEST['file']:**请求是否非空**
is_string($_REQUEST['file']:**请求是否为字符串**
emmm::checkFile($_REQUEST['file']):**能否通过checkFile()函数的判定**
**当三个条件同时为真时,对文件‘file’执行包含**
审计checkFile函数
class emmm
{
public static function checkFile(&$page)
{
w
h
i
t
e
l
i
s
t
=
[
"
s
o
u
r
c
e
"
=
>
"
s
o
u
r
c
e
.
p
h
p
"
,
"
h
i
n
t
"
=
>
"
h
i
n
t
.
p
h
p
"
]
;
i
f
(
!
i
s
s
e
t
(
whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset(
whitelist=["source"=>"source.php","hint"=>"hint.php"];if(!isset(page) || !is_string($page)) {
echo “you can’t see it”;
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
p
a
g
e
,
0
,
m
b
s
t
r
p
o
s
(
page, 0, mb_strpos(
page,0,mbstrpos(page . ‘?’, ‘?’)
);
if (in_array($_page, $whitelist)) {
return true;
}
p
a
g
e
=
u
r
l
d
e
c
o
d
e
(
_page = urldecode(
page=urldecode(page);
$_page = mb_substr(
p
a
g
e
,
0
,
m
b
s
t
r
p
o
s
(
_page, 0, mb_strpos(
page,0,mbstrpos(_page . ‘?’, ‘?’)
);
if (in_array($_page, $whitelist)) {
return true;
}
echo “you can’t see it”;
return false;
}
}
!isset($page) || !is_string($page):**$page变量不存在或者不是字符串**
in_array($page, $whitelist):**$page变量存在于$whitelist数组中**
$_page = mb_substr:**截取出一段字符串并串赋值给$\_page**
in_array($_page, $whitelist):**$\_page变量存在于$whitelist数组中**
$_page = urldecode($page):**对$page进行url解码后赋值给$\_page**
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
0d7db3eabb956e.png)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-XDsbGZ2W-1712563379275)]