先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
什么是文件上传漏洞:
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
第一关:
关闭js
创建一句话木马,
首先创建一个.php文件,写入一句话木马,进行上传;发现页面弹出:
通过查看网页源码发现有一个checkFile 函数获取了文件名称,并判断了文件类型(白名单)。
该文件并没有在白名单里面,所以被禁止上传。白名单我还不知道怎么绕过。
解决方案:
js是前端页面独有的,可以尝试关闭浏览器的js功能
关闭js功能后发现除上传按钮外其他按钮都不能点(js),再次上传一句话木马文件(我的文件名是web.php)发现成功上传。
不能使用eval—可以使用assert:
?0=assert&1=phpinfo();
第二关:
修改文件类型
再次尝试使用web.php, 提示文件类型不正确;查看源码,没找到checkFile,可能在后端验证;
解决方案:
提示文件类型不正确,尝试一下改文件类型
使用抓包软件,更改web.php的文件类型为image/jpeg
放包后发现上传成功
第三关:
上传web.php,显示不允许上传…;说明是黑名单限制
解决方案:
上传web.php,发现这一关限制后缀,查看源码发现这一关是黑名单限制,限制.asp、.aspx、.php、.jsp。
尝试修改后缀为:php3,php4,php5,phtml。成功上传
第四关:
查看提示,可以看到这一关使用了更多的黑名单限制,上一关的php3,php4等都被加入了黑名单,所以本关不使用修改后缀绕过。
解决方案:
尝试使用.htaccess绕过。
介绍一下什么是.htaccess:主要的作用:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。可以把php后缀隐藏起来
创建一个.htaccess文件,写入SetHandler application/x-httpd-php(将该目录和子目录的所有文件映射为php文件)
先上传.htaccess文件,因为它可以把任何文件都解析为.php文件,所以我们将web.php修改为web.jpg,再上传web.jpg文件,上传成功,最后访问web.jpg时会自动解析为php文件。
第五关:
查看源码,发现限制了htaccess文件,但是没有大小写限制,因为php没有大小写限制,所以修改大写PHP,成功上传。
第六关:
查看提示,是黑名单限制,
查看源码,发现没有空格过滤,在Windows中,空格在存储时会自动删除
解决方案:
不能在修改文件名后面加空格,也会被删除,所以使用抓包软件进行抓包,然后 在文件名”web.php“后加个空格,成功上传。
第七关:
与第六关相似,查看源码发现这一关没有删除 **.**的代码,在Windows中文件存储时会自动删除后缀后面的“.”,同样抓包修改后缀,上传成功
第八关:
与前两关类似,这关少了::$DATA的删除。
当php在windows环境的时候,如果文件名+ “:: D A T A " 会把 " : : DATA" 会 把 ":: DATA"会把"::DATA" 之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名
所以跟前两关一样的步骤
第九关:
查看提示,这一关使用了白名单限制,
查看源码,它先是将文件后的“.”依次删除后再进行下一步,但是deldot函数在遇到空格时会停住
所以我们将web.php文件后缀添加“. .”的形式绕过同样抓包修改
上传成功
第十关:
查看源码,发现这一关是先获取了文件名称,然后判断文件名里有没有$deny_ext,如果有的话就替换为空
$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");
解决方案:
尝试使用双写,将文件类型修改为 .pphphphpp 这样在检测到php时会删除php,上传成功。
第十一关:
查看源码,发现本关使用了白名单,如果在白名单内,,会将文件进行重命名:文件目录+随机数+时间
解决方案:
%00截断:文件名%00后的东西会被丢弃(php5.2版本,其他版本不行)
上传机制: 先把文件放到临时文件里,再复制到上传目录。
00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以0(即0x00)作为字符串的结尾。 操作系统在识别字符串时,当读取到0字符时,就认为读取到了一个字符串的结束符号。
无论0x00还是%00,最终被解析后都是一个东西:chr(0)(c语言)
chr()是一个函数,这个函数是用来返回参数所对应的字符的,也就是说,参数是一个ASCII码,返回的值是一个字符,类型为string。
那么chr(0)就很好理解了,对照ASCII码表可以知道,ASCII码为0-127的数字,每个数字对应一个字符,而0对应的就是NUT字符(NULL),也就是空字符,而截断的关键就是这个空字符,当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。
写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-HVmzUlqZ-1713413739951)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!