合天网络安全笔记-三-

合天网络安全笔记(三)

P2:web安全学习路线图 - 网络安全就业推荐 - BV1Zu411s79i

教程开始之前,up已经把相关的网安基础学习路线。

网安学习必备工具,电子学习书籍,高清教学视频,晚安面试题都已经准备好,放在pl区了,给个三连全部打包带走哦。

赶快冲呀,web安全的学习应该是一个体系化的内容,考虑到整体技术的难度,我们整个学习过程中,应该是需要循序渐进的去进行这个学习,在整个过程中不停地去感受到自己的提升,在这个情况下。

我们才可以能够更好地坚持,持续地保持学习下来,在大家现在看到的脑图之中呢,我们依照技能的学习顺序,让大家逐步的去上手,从简单的再慢慢进阶到复杂的,把各种类型的技能呢进行了一个细化的分类。

以便于大家可以更加完整,并且轻松的去掌握到整个关于web安全的学习,内容和技术体系,在这个体系当中呢,首先我们可以看到它的内容非常非常多,我们把所有的主题全部展开之后,就会看到它有很多很多的内容。

可能对于任何一个人来讲,我们的学习啊,可能都会花费很长的时间,才能够把这个脑子上所列举下来的,所有东西全部学完,所以我们在这里给大家去简单说一下,大家看到这个脑图呢也不用紧张,也不用觉得东西太多对吧。

按照一个web安全的整体学习,为了让它更有效率的学习呢,首先第一个我们要学习的应该是web安全,基础这一块,有没有发现当我们收起来之后,其实啊要学的东西也就不是那么多了,对吧啊。

那首先在接触到web安全的时候,第一阶段我们先要掌握到web安全的一些基础,这些基础包括什么呢,比如说网络协议,在整个的互联网的所有软件当中啊,我们都是基于网络协议来进行数据传输的。

所以了解清楚网络协议的相关内容,搞清楚ip,搞清楚http相关的一些具体的内容,这个对于我们的后续学习一定会事半功倍,所以像是ip啊,像是这个http啊这样的一些东西呢。

我们把它熟悉好之后是非常非常有帮助的,除了这个ip和http这样的一些网络协议之外,接着在web安全领域上面,我们会频繁的使用到某一些特定的工具,那这一块呢首先作为网络安全领域上。

应用最为常见的一个抓包工具,叫做bb weet,这个东西也是我们在web安全的这个领域下,既能学习的重中之重,这个bb street它也同样包含有非常非常多的功能啊,像是burp suite代理。

像是他的一些常用的模块,像是他的一些弱口令爆破,或者说是密码破解的这样的一些实操啊,这个是我们需要去懂得的一些基本的使用,接着呢对于web安全整个技术的学习,其实我们能够达到最直观的收益。

并不是通过就业,或者说是其他的一些比赛之类的内容,而是什么呢,src的挖掘能力,所以web安全首先我们要搞清楚,s r c的这个独立挖掘的能力是怎么去做的啊,常态化的一些操作行为我们都要搞清楚。

在了解完web安全的技术体系之后,我们接着就要开始进入到web安全的一个,相对比较核心的技术体系内容,学习了这个体系内容呢就是有关于漏洞的学习,那我们把所有的漏洞啊,按照目前市场上遇到的一些常见的。

一些容易频繁出现的这样的一些漏洞的情况,我们把它做了一个简单的排序,这个排序第一呢就是业务逻辑漏洞,这也是我们在进行漏洞挖掘的时候,非常非常常见的一个漏洞的类型,业务逻辑漏洞,对于这个漏洞的整体。

我们会跟大家来讲解,有关于业务逻辑漏洞本身是什么东西,它包括有像是url的跳转漏洞,像是信息轰炸的漏洞,像是密码找回的漏洞,还有包括说像是支付逻辑的漏洞,这些漏洞他们是怎么样去发现的。

大概会是在什么样的一些位置,以及说这个漏洞如何去利用,如何去绕过它本身的一些验证机制以及常态化,下面我们这些漏洞的一些修复的手段,会是什么样子的,通过这一章节内容的学习,我们就可以非常完整的去掌握到。

关于业务逻辑漏洞,这样一个非常非常主流的漏洞技术体系,它应该是怎么样的一个操作情况,包括说各种类型业务下的这个业务逻辑漏洞,它的成因,以及我们的挖掘和利用的方法是什么样子的。

就会在这个业务逻辑漏洞这一个阶段下面,会具体的去了解到,那了解完业务逻辑漏洞之后,接着我们需要去了解一个在web安全领域下,非常非常主流,也非常非常常见的另外一个漏洞,叫做cycle注入漏洞。

sql注入漏洞,它全程是基于软件的数据库来搞的,一个漏洞的相关内容,所以我们在掌握这个sql注入漏洞的时候呢,我们必须得优先去了解到整个数据库,它在软件系统当中它的用途是什么样子的。

以及说它的这个数据管理的原理,以及包括说市场现在最主流的关系型数据库,mysql数据库的一个使用到底是什么样子,所以在这里呢,我们列举出了,包括数据库本身的一些基本的概念的东西,需要我们去了解的。

包括mysql本身的一些环境的安装,远程连接的一些手法,包括说通过一些常用的sql语句的操作,来操作我们的数据库增删改查,这些包括一些常态化的函数,查看我们当前的状态,查看我们当前的版本等等等等。

然后以及在sql注入领域下面,我们会非常常用的一个叫做information schemer,这样的一个库,它有什么样的作用,我们可以做一些什么样的事情,通过在sql注入这个领域的前面这一部分呢。

我们把数据库的相关基础,做一个相对比较系统的学习,接着呢,我们就会开始来了解到sql注入本身的内容了,像是sql注入本身呢,它的一些基础,它的基本的概念,它的注入的原理,它注入的手法分类。

包括说这个漏洞它会产生一些什么样的危害,以及说搭建一些跟我们seo植物相关的靶场,比如常见的像是d v w a,像是sl i lips这样的一些东西啊,像这些内容的搭建呢,可以便于我们很好的去学习到。

sql注入的这样一个技术,再把前期的环境的部署,以及说数据库的基础全部都掌握之后呢,我们开始需要真正的进入到sql注入的一个,技术的掌握和学习过程中,那在这个过程中呢会结合到联合查询,结合到布尔盲注。

结合到时间盲注,结合到这个报错注入,以及说宽字节注入smap的工具应用,这样的一些技术维度,带大家全方位的去了解到,有关于sql注入这样的一个漏洞的技术学习,应该要掌握的所有内容啊,像是联合查询当中。

我们对于漏洞进行判断,它是否存在,以及对于漏洞当前判断,我们需要注入的数据类型是什么样子的,然后通过一些方式来明确到我们需要展示的,查询列数,确定我们的显示位,然后再从而获取到我们想要获取的数据。

包括通过注耳盲注,对于无回显的啊,对于无悔险的这种显示状态,我们来如何进行sql注入,包括说时间盲注,它也是一样的对吧,有很多很多的注入方式,这些不同的注入方式,都可以应对在不同的场景下面。

所以我们在学习sql注入的时候,不能够只是单纯从一个注入的维度去思考,我们在应对到不同的系统,所应对的环境场景真的太多太多了,所以对于sql注入的掌握呢,它有非常多的方式方法是需要我们去掌握的。

在这样的一个掌握情况下,我们才可以很好的去了解到整个sql注入,它各种主流的注入方法,以及包括说我们还需要去了解到,在sql注入这个领域下面,有一个非常非常常用的工具叫什么呢,叫做cycle map。

这个sc map他在sql注入的领域下面,它是起到一个什么样的作用,它的环境应该怎么去部署,我们怎么使用这个sql map的工具,更快速去找到系统当中存有的cycle,注入的这样一些漏洞。

这些注入点以及说通过sql map,可以很好的帮我们实现到注入,来获取到我们想要的内容,这也就是我们所讲到的,自动化注入的一个实现啊,所以整个sl注入这一章节的内容讲解呢。

我们会让大家去了解到mysql数据库的相关的应用,以及sql注入的一些相关实操的技术技巧,同时呢也包括有sc map,它本身工具的一些自动化注入的应用,通过这样的一些技术的全面掌握。

大家可以对于sql注入有一个,非常非常非常好的掌握啊,然后第三个漏洞的讲解就是跨站脚本攻击漏洞,也就是俗称的x s s漏洞的一个讲解,在这个xss漏洞的讲解过程中,因为它是关联到了系统的前端。

所以说在这个漏洞的学习之前呢,我们需要对前端有一个基础的认识,包括html包括javascript,包括说前端对于事件处理的这样一些逻辑,是怎么去实现的啊,这些这些内容全部都很好的去熟悉,了解之后。

我们才能够更好的去实现,有关于xs的这样一个漏洞的利用,那这个在掌握到前端的一些,相关的基础内容之后呢,我们会去了解到xs s这个漏洞,它是什么样的一个原理,它存在于什么样的场景。

这个漏洞可以给我们带来一些什么样的危害,包括说这个漏洞的类型,像是反射型存储型,还有像是doom best这样的一些情况啊,这样的一些不同的类型,我们都需要很好的去了解,就像我说的不同的软件。

它会有不同的表现形态,我们在不同的环境下面,应对到这个漏洞,可能生成的这个情况是不一样的,所以我们需要更加全面的去了解到,这个漏洞的方方面面,在了解完xs s这个漏洞,的基本的一些原理之后呢。

接着我还需要去了解到这个漏洞,我们可以用它来做一些什么样的事情,包括说xss当中获取cookie漏洞去钓鱼,或者说做流量挟持这样的一些情况,都是我们在整个xss的过程中。

非常非常常用的一些漏洞利用的手段,然后同样的在这个领域下,像是我们的beef攻击啊,beef平台的一个攻击实现,这个也是xs s下面非常非常主流,且常用的一种操作行为,所以对于beef的一个使用。

我们也是需要非常清晰的去了解到的,同时呢对于这个漏洞啊,本身它是有很多的修复方式的,所以我们也需要去了解到,一般情况下我们的这个网站,它对于xss漏洞的一些修复手段,是怎么去实现的。

我们在了解到他的修复手段之后,我们可以更好的去做一些漏洞限制的绕过,让我们可以更加好地实现,xss漏洞攻击的这样一个手法,所以在跨站脚本攻击这个漏洞的章节内容下面,我们列举了包括xss漏洞的原理。

以及它的常态化的攻击手段,包括说这个漏洞的利用方法,然后结合到beef平台的一些使用啊,然后同时呢也会要求大家去了解到,关于xss漏洞的一些修修复的手段,以便于我们可以更好的去对这个xs的漏洞。

来进行多维度的攻击,这个是我们在了解一个漏洞,学习一个漏洞的时候,必然要懂得方方面面的知识啊,那除了这个呃业务逻辑sl注入,包括说xs这样的一些形态之外呢,我们还需要去了解到跨站请求伪造漏洞。

也就是cs rf跨站请求伪造漏洞c s r f,这个也是非常常见的一个漏洞啊,包括说同样的这个漏洞,它具体的原理是什么样子的,这个csrf为什么会出现,它出现之后会产生一些什么样的危害啊。

我们的攻击流程会是什么样子的,包括说这个漏洞,我们空过什么样的一些方式去利用啊,包括他的get请求,他的post请求这样的一些内容上面,我们该怎么去做啊,怎么去利用这个漏洞来达到我们的目的。

同时呢也会有一些常态化的漏洞,修复的一些手段,这些东西我们都需要去一一的系统掌握,这个是关于csrf这个漏洞,在了解完cs rf的漏洞之后呢,还有像什么呢,像是服务器端请求伪造漏洞。

也就是我们所讲的s s r f啊,s s r f也是非常常见的一个啊,那同样的,我们在做这个s s rf漏洞的列举的时候啊,也是基于漏洞本身的一个原理,它是在什么情况下出现的。

我们该怎么样去发现这个漏洞,以及包括这个漏洞它的分类啊,包括有回显的漏洞,无回显的漏洞这样的一些情况,同时呢这个漏洞我们该怎么去利用,利用这个漏洞可以达到一些什么样的效果。

比如说像是攻击redux这样的一些事情对吧,包括说呃像是反弹需要的这样的一些内容,我们该怎么去实现啊,这个是基于有关于s s r f漏洞的一个,实际的使用啊,同时呢包括说像是主流的一些对于漏洞的。

防御手段,像是添加白名单,像是协议的限制等等等等这样的一些手段呢,他们是怎么去实现的,那基于他们实现的这个过程,我们该怎样的去绕过这样的一些防御,来更好的去对服务端的这个s s i f的实现啊。

这个漏洞的攻击来做到一个更好的效果,这个是关于srf漏洞的一个相关内容,那学完这些常态化的比较,市场主流的这些漏洞之后呢,呃其实还有很多其他的漏洞,但是在学习完主流的漏洞之后,我们优先应该考虑的是。

漏洞挖掘的技巧该怎么样啊,漏洞挖掘的技巧该怎么样,因为我们不可能只是单纯的去了解到,而不同的漏洞它是什么样的成因,该怎么样去利用,那我更想要知道的是,在整个网站上面,我该怎么去挖掘这些可能存在的漏洞呢。

所以说我们需要对于漏洞挖掘这个东西,有一个相对比较清晰的认知,要去了解到在整个网站当中,我们做漏洞的挖掘,应该需要用到一些什么样的手段和方法,所以在这里呢,我们也列举了,关于漏洞挖掘技术的一些相关内容。

这些内容包括说信息收集,包括说我们常见的这些扫描器,该怎么去应用的这样一些技术,通过信息收集,我们可以在src的挖掘前的这个系统,前期的信息收集工作,以便于说我们后续正儿八经。

开始做src的挖掘的时候呢,我们可以更加有效率的去进行这些信息的收集,包括说我们的域名信息,包括说我们的ip信息,包括端口信息,网站信息等等等等,这样的一些信息。

他的收集可以让我们更好的去了解到这个软件,了解到这个网站,让我们可以做到更好的一个src的漏洞挖掘,除此之外呢,在整个漏洞挖掘的过程中,我们还会频繁的使用到,一个叫做扫描器的东西啊,扫描器的这个内容呢。

它分为主动扫描器和被动扫描器两种,并且呢目前市场最为主流应用的像是aw v s,像是x ring这样的一些扫描器,都是我们平时在做src的时候,非常非常常会去用到的这样一些工具啊。

所以说在漏洞挖掘的这个阶段下,我们会给大家去列举到,你如果想要挖掘系统平台的src的漏洞啊,想要去做src的漏洞挖掘的话,对于整个系统的前期信息收集,以及在挖掘过程中的这个扫描器的使用,该如何去应用。

来提升我们有关于漏洞挖掘的效率,这个是可以结合到前面我们所列举下来的,每一个漏洞来进行讲解,来进行使用,来进行应用的这样的一个过程啊,然后同样的除了像是漏洞挖掘之外,还有一些常见的漏洞。

包括说文件包含漏洞,它是一个什么样的情况,我们怎么去利用这个漏洞,来实现我们自己的一些攻击,包括说上传一些啊含有恶意图片,或者说包含有恶意代码的这些文件哎,来对我们的这个目标网站。

进行一个对应的攻击呢对吧,像是文件包含的漏洞与此关联的呢,还会有一个叫做文件上传的漏洞啊,我们在文件包含的漏洞过程中,唉,我们如何去将这些有恶意的文件,去把它传递给到服务器呢,所以我们需要用到文件上传。

而文件上传的这个功能当中呢,很多系统的文件上传它都是存在有漏洞的啊,它都是存在有漏洞的,所以文件上传和文件包含这两个漏洞,都是我们一般会联合到一起去使用的东西,而在我们的这个脑图当中。

也详细明确的跟大家讲解了,关于文件包含漏洞和文件上传漏洞,他们是如何实现的,他们的这个基本的概念会是什么样子的,以及说如何去制造一句话的木马,像是大马,像是小马这样的一些东西啊。

对于web shell这个实现该怎么去做,以及说对于文件上传之后,在系统当中把文件包含的漏洞,可以让他哎运行起这些木马程序,来对我们的系统产生更多的危害,来获取更多的权限,来获取更多的数据等等等等。

这样的一些攻击手段,以及说针对于系统已有的它的文件检测机制,或者说他的一些防御手段,我们该如何去绕过它,这个在我们所列举到的,关于文件包含和文件上传漏洞当中,我们都有详细的去说明。

除了文件包含和文件上传之外,还会有像是xml,就是xml的外部实体注入的这个叉叉e的漏洞啊,像是这个叉叉e的漏洞,因为它关联到了xml这样的一个内容,所以我们得需要先了解到xml,它的一个基础概念啊。

包括说它的语法规则是什么样子的,xml它的一些数据类型包括什么啊,包括这个文件它的这个格式编写是什么样子的,一个形态参照到底是个什么东西,以及说dt d,这个也是我们在xml的这个应用过程中。

非常非常常见的一系列的内容啊,然后除此之外呢,对于叉叉e的这个漏洞啊,它是一个什么样的情况,我们该如何去利用这个漏洞,如何将xml的外部实体注入,这个实现了在整个的xml的外部实体注入,叉叉e的漏洞。

内容讲解过程中,我们会非常详细的,把整个叉叉e漏洞的一个实现,包括它本身的介绍,包括他的利用,包括这个漏洞的常态的一些修复手段,都会列举在这样的一个阶段内,让大家去。

可以更加清楚地了解到有关于xml的外部实体,注入漏洞啊,那除了这些常态化的一些技术漏洞之外呢,还有我们软件系统架构体系上面,可能会关联到的一些中间件,这些中间件本身它也是存在有漏洞的啊。

除去我们前面所讲到的sql注入,这样的一些内容之外,还有额外的,比如说啊像是j boss,像是web logic这样的一些历史版本过程中,它可能存有的漏洞,如果说对方的软件系统。

他们使用的是这样的一些中间件,并且恰好他们使用的是这样的一些,历史版本的话,那也就意味着这些漏洞,是可以直接被我们所使用的,但是在讲这j boss讲这个web logic之前呢。

肯定大家还是得要先了解到,这个所谓的中间件的概念是什么,所以大家肯定要学习中间件的漏洞的话,优先你得要先考虑清楚,关于中间件它到底是一个什么样的概念,同时呢,像是这个历史版本下面存在有明显漏洞的。

这样的一些中间件,像是j boss,像是web logic这些东西,他们这些漏洞到底是什么样子的,以及这些东西他们自己是什么样的概念,这些漏洞我们该怎么去利用啊,这个漏洞该怎么去发现。

这样的一些内容都是我们需要去了解到的,当我们了解到这样各种维度的漏洞之后,我们所应对的这个软件系统,它存在有任何一个维度的漏洞,都可以被我们非常非常清晰地去了解到,所以这个是我们所列举到的。

关于外部网络安全这一块,关于web安全这一块,我们应该需要去了解到的一些学习到的一些,非常非常核心且市场非常主要的技术体系,内容都在这个脑子上面已经完整的列举了,而这个内容呢如果大家有需要的话呢。

可以去私信我们啊,找我们来要这个脑图,这个是没有关系的啊,然后除了这个脑子上所列举的这些,常态化的漏洞,包括说web安全的一些基础内容之外,还包括有一些什么呢,对于web安全这个领域。

如果说你想要好好的去学会它,想要让自己变的能力更加强,让能够让自己可以学得更加完整,那有两个东西一定绕不开,一个是操作系统linux,因为我们应对的所有的软件系统,基本上99。

99%都是gb linux,操作系统搭载的服务器,所以我们在做这些web安全的学习,对于漏洞的一些挖掘和利用的时候呢,我们一定需要去操作到对方的这个操作系统,这个服务器啊。

这个服务器呢基于linux来部署的话,所以我们一定要了解到linux相关的内容,包括它常态化的一些指令,包括它本身的目录结构内容,包括它的用户,用户组的权限等等等等一系列的内容。

这些都是我们需要去了解到的,除了linux之外,另外一个绕不过的就是p h p啊,可能你作为一个初学者,或者说有兴趣去想要了解的同学呢,你只需要按照这个脑洞上面,前面所列举的这些漏洞的内容。

你把它全部学会,你就可以开始做s r c的挖掘,或者说你就可以开始进入到这个领域了,但是如果你想要让自己卷起来,你想要让自己偷偷的惊艳到所有人,那么肯定在除去这些web安全的。

常态化的技术体系内容的学习之外,你肯定还是得要去优先掌握一门叫做,p h p的语言啊,这个菲律宾的语言在未来的时间里面,一定会给到你比较好的帮助,所以在这里呢,我也列举了一些关于菲律宾的这门语言。

我们应该学习的内容,包括说他的网站开发,该怎么去实现它的编程的一些基本的编程内容,该怎么去做它的环境,部署它的函数,它的对象等等等等啊,这样的一些内容,然后同时呢也包括说像是p h p的代码审计。

我们如何去做代码审计,这个代码审计该怎么开展,中间会应用到一些什么样的技术,用到一些什么样的技巧等等,这些内容呢我们都会啊给大家去列下来,希望大家在除去web安全的技术领域的学习之外,还可以去学到更多。

其他在这个行业内有用的技术,这个就是给大家列举出来的,这样一个web安全的脑图的内容内容,如果大家已经听到这里了,觉得能够坚持下来,听到这个时候的同学,我觉得要一个三连,应该不是特别过分的一件事情吧。

还望各位听到现在的同学,可以给我一个一键三连鼓励鼓励我,那么这一套啊就是有关于web网络安全的内容,如果说大家想要进入这个行业的话,你不知道该学什么,不知道该怎么办,没有关系,你按照我列的这个脑图。

你就无脑去学就完事儿了啊,你无脑学会这个脑图上所列举的东西,按照我所讲的,从web安全到业务逻辑漏洞,到sql注入漏洞,再到跨站脚本攻击漏洞,再到尾站啊,跨站请求伪造漏洞,再到服务器端请求伪造漏洞。

在包括漏洞挖掘的技巧,以及说我们的文件上传漏洞,文件包含漏洞,包括远程代码执行漏洞,xml的外部实体注入攻击漏洞,以及常见的中间件漏洞,你如果按照这样的顺序,一个一个的去列下来去学习。

按照我的脑图上给到的这些技术内容,你无脑去学,你一定可以进入到web网络安全的这个领域,一定可以成为一个合格的网络安全人员,这个就是我要跟大家所讲到的。

P20:第18天:本地文件包含及远程文件包含漏洞详解 - 网络安全就业推荐 - BV1Zu411s79i

是是只有我没有画面吗,没有应该大家都没有画面,因为我还没有开那个全屏分享。

我想嗯你们现在能看得到我的屏幕吗,好的,为什么今天都没有人来听课呀,那你们为什么就是有同学做了,我发给你们的预习内容吗,就是发群里面的那个,这两个实验有人做吗,对于w那个做了一下下面的这个呢。

下面这个做了吗,好吧,现在八点钟了,然后可能大家也没有做,我之前发给你们的一个预习内容,那我们这节课讲的是一个文件,包含漏洞,如果大家有做那个实验的话,可能就会嗯先了解一下啊。

那我们开始今天的一个课程的讲解吧,今天讲的是这个文件包含漏洞,然后按照惯例有一个目录,最开始的话一个漏洞的概述,第二部分的话就给大家介绍一下文件包含漏洞,它的类型分为几类。

以及然后每个类型它是如何进行一个利用的,第三个部分的话,就介绍文件包含漏洞的一个危害以及防御,这个危害和防御,应该大家啊听完这个类型及利用,应该自己也能总结出一两点。

然后第四个的话就是给大家布置一个课后作业,那首先来看第一个部分,就是文件包含漏洞的一个概述,首先是一个什么是文件包含,他其实是开发人员将重复,将需要重复调用的一个函数写入一个文件。

对该文件进行包含时产生的一个操作,就叫文件包含,这样编写代码能够减少代码的冗余,降低代码后期维护的难度,保证网站整体风格的统一,比如说我们的这个我们的和天,你可以看到它其实这个头就是这个上面。

我们点别的地方,就是它这个这个上面他虽然就是颜色变了一下,但是它基本内容还是没有变的,以及它的这个下面都是没有变的,这些东西其实就是每个页面里面都需要用到的,一些东西,就比较重复嘛。

它就可以写在一个文件里面,然后进行一个引包含,把它引入进来,你看它这个尾部也是一样的,所以这样的话,就可能就这就是一个文件包含的一个例子,那它为什么会称之为漏洞,就是漏洞产生的原因是什么。

其实就是因为文件包含的函数,加载的参数没有经过过滤或者是严格定义,可以被我们攻击者来控制,包含其他的一些文件,导致就执行了一些非预期的一个代码,我们来看一下它的一个,比如说它常见的一个漏洞代码。

看零一这一个部分就是在这边的话,你可以看到在这个p h p代码中,他包含通过这个include函数,它是一个文件包含的一个函数,包含我们这个file lab。

然后这个file lab是通过get来进行传入的,那这样的话是不是这个get我们之前也有说过,是不是我们就可以直接在它的ui l中,加入这个file la,然后他通过这个get就能取到。

那这里的话它并没有对我们这个传入之后,就是这个file lab进行一个嗯过滤,这样的话,那就能够包含我们自己上传的一个文件,或者是其他他们系统里面自带的一些,敏感的一些文件。

所以这就会产生一个文件包含漏洞,你可以看到零二的话,就比如说他访问的url就是问号,后面file name等于show。p h,那这样的话他就会把受点p h p,包含进我们这个嗯当前这个页面里面来。

那我们改变file lab的值的话,就可以改变这个菲律宾代码中包含了一个文件,是不是说大家能理解吗,如果能理解的话,就打个一,好大家应该都能理解,这这个漏洞还蛮简单的,那我们接着来看。

这怎么成这个样子了,嗯就是菲律宾中文件包含的一些函数,第一个的话就是require,第二个的话就是这个include嗯,介绍这些函数的话,大家如果以后想做代码审计,可能就会你去审计一个cms的时候。

就可以全局搜索这些关键词,就是比如说全局搜索这个require,require ones,include include ones的话,你然后再看一下他在那个他的代码中,有没有进行一个有效的过滤。

或者是怎么样来判断它是否存在,这个文件包含的一个漏洞,那我们接下来看一下它具体的一个解释,第一个的话就是这个require组嗯,有一个require函数,他这个四个这边给出的,就是他们四个的一个区别。

这个他们四个都是用来进行文件包含的,一个函数,然后区别的话就是这个require的话,它是函数区出现错误时会直接报错,并退出程序的执行,那这个require once的话,它也是出错的时候就直接退出。

但是它和这个require的一个区别,就是它仅仅只会包含一次,然后在脚本执行期间,同一个文件可能会被多次引用,那么为了确保只包含一次,来避免函数重定义以及变量重新赋值,然后出现一些啊一些问题的话。

他就会使用这个require once,来进行这个文件,包含第二个的话就是include,那这个include函数的话,它是函数出现错误的时候,并不是像require这样直接退出。

而是它会抛出一个异常呃,抛出一个警告,然后程序是会继续运行的,然后include ones的话,它也是出现错误的时候,仅仅会抛出一个眼警告,而且它只会包含一次,就和这个require ones差不多。

这四个函数大家了解一下就好,主要可能大家如果在代码审计的话,可能就会就会用到,那第二个部分的话,就是这个文件包含漏洞的一个类型,及其它的一个利用,我们首先来看一下第一个,它就分为两种类型。

一种是本地文件包含漏洞,其实我这少打了一个漏洞,就本地文件包含以及远程文件包含,那本地文件包含的话,顾名思义就是它被包含的文件,就是我们使用那个刚才说过的那四个函数,去进行一个包含嘛。

它包含的那个文件是在服务器本地的,所以就叫本地文件包含,远程文件包含的话就是我们使用类似的函数,包含的文件在我们远程的一个服务端,可能是我们攻击者控制的一个服务端,这个本地文件包含它的一个利用方式的话。

就是它可以包含本地敏感文件,或者是我们自己嗯通过客户端上传文件,上传上去的一个文件,然后它进行一个包含,那远程文件包含的话,他可能就是包含攻击者指定的一个url,里面的一些恶意文件。

这个l f i就是local file include的一个缩写吗,这个i fi就是a remote file include,就是远程文件包含以及本地文件包含,我们接着来看啊。

我们接着看一下这个本地文件包含漏洞,第一个的话在这里的话是给大家举了一个例,子,是包含我们的一个系统文件内,在这的话我们的c盘都有这个文件,这个windows杠win。i n i。

然后它里面的话里面的内容就是这个,那个画笔嗯,就是这个灰色这一串的一个内容,就会显示给我们在这里,然后第二个的话就是包含我上传的一个文件,那在这儿这个点点杠大家知道是什么意思吗,就是这个点点斜杠。

有pose什么,什么意思,点点写啊对,对,然后在这的话它就这里这个配置的话,在这等于我可以,这个其实是如果大家有预习的话,其实是这个,在这这个file include就是文件包含嗯。

如果大家想做这个的话,之前我给大家有一个预习内容,这个文件包含漏洞,这个实验里面它的一个实验环境就是这个,然后大家先可以就是那个课后再做,或者是之后再做,现在先看,先看我吧,然后在这里的话。

这个这个地方它有一个传入了一个参数,就是这个配置等于,然后后面加上了一个include,点p h p,在这儿的话,它我们可以点击其他的一些来看一下,你可以看到在这的话。

它这个配置就会等于file一点p h p,然后在这里的它的一个内容就做了一个更改,我们返回,你看到这它又变成了include。p h p,然后翻到二的话,就是这个file 2的一个菲律宾的一个内容。

那我们就可以猜测它这个配置,这里他传入的这个参数,可能就是在当前这个fi这个index点,菲律宾里面去引入的一个,文件,所以说他在这等于file一点p h p的时候,他就引入了file一的一个文件。

然后file 3的时候,它就引入了一个file 3的一个内容,所以说我们可以在这试着去进行,包含其他的一些一个目录,比如说在这的话,我们是包含了一个c盘下的,windows,嗯可以看到它在这里的话。

因为这个搭在我本地,所以我们可以去看一下c盘的,你可以看到它这儿显示的东西,其实和我们这个里面就是一样的,只是它没有那些换行符,对吧,所以在这的话就可以确定它可能就存在,这个文件包含漏洞。

然后我在这儿给大家演示的第二个例子,是说包含了一个上传的文件,那在这的话我在这个,这个根目录下面它是有一个。

菲律宾info点菲律p了,然后在这里的话是执行了一个菲律宾for函数。

然后我在这儿尝试去进行一个包含这个文件,就是这个菲律宾info点菲律宾这个文件,那我们当前这个目录是在哪呢,是在这个dv w a杠master,然后这个这个什么,这个东西吗,这个里面的fi路径下面。

其实就是在这个这个地方嘛对吧,然后我们要包含那个的话,就要使用一个相对路径去进行一个包含,那为什么这是三个点呢,三个回推呢,嗯你可以看到它这个上面的话,就是会执行那个ph info的一个函数。

然后这个下面就是他自己的一个本来的一个,index的一个文件,那在这儿是因为他就是他这有三个回退嘛,是因为它的相对路径决定的,当前我们是在这个fi目录下的这个index。ph。

然后回退一格就到这个目录下,回退两格就到这个目录下,回退三格就到了这个3w目录下,那3w目录下就有一个这个ph for。ph,所以他这就引入了进来,嗯大家可以看到我刚才这儿又刷新了一张图。

可能看得不太明显,在这里的话,我们前面不是包含了一个相对路径的一个,菲律宾文件吗,在这里的话我就直接去包含了一个当前路径下,当前目录下,就是这个fi的一个目录下的一个,ph bf。txt文件。

那你可以看到它下面也是进行了一个这个,ph p four这个函数的执行,那这是为什么呢,右边这个就是它的一个内容,这个ph info。txt的一个内容,啊我下面其实已经写出来了,只包含一次。

不理解什么意思,啊你说只包含一次啊,你是说那个函数是吧,这是吧,只包含一次,你到时候去做一下那个我们实验室有一个,文件包含漏洞初级篇,它在这个步骤一里面,它就详细的介绍了这四个函数的一个区别。

在这里就有说到他是说嗯,就像文件名中只会包含一次,如果需要包含的文件已经被包含过了,再次调用这个包含该文件时,就不会包含这个文件,然后这个函数可以防止文件被重复包含,或者是变量被覆盖嗯。

然后他接下来就是给你演示了,切身体会一下,怎样去进行这四个函数的一个区别,如果不懂的话,可以去看一下那个,那我们回到这个地方,就是回到这个包含上传文件,那在这的话,我其实是假设我这个菲律宾info。

txt,是我们自己上传上去的,那在这儿他为什么会进行一个执行呢,其实就是因为我们在这里,它有一个就是说包含的文件内容,只要符合ph语法,就会被当做b hb代码进行解析,无关它的后缀名是什么。

所以说我们进行一个文件上传的时候,不是他可能会有一些绕过,只允许我们上传一个什么啊,图片格式的怎么样,那我们这个时候就可以把它的后缀更改为jpg,然后如果它存在这个本地文件包含漏洞的话。

我们就可以在本地包含漏洞的地方去包含,我们刚才上传的那个文件,因为它被包含的内容只要是符合p h p语法,它就会当程序p h p代码来进行解析,所以的话你在这把它改成p h p info。

点jpg png jpg df等等,它都会进行一个解析,那怎样是一个符合p h p语法的呢,那你首先肯定是要有这个头的,就是这个小于符号问号,然后p h p这个它才会把它识别为。

这是一个菲律宾的一个文件,是菲律宾的一个代码,嗯我这么说,大家能理解吗,好的,这个大家需要需要演示一下吗,如果需要演示的话,你就在这里敲一个需要演示,然后我就,给大家演示一下,我们接着往下讲。

这个需要演示吗,就是我刚才说的这个,他去包含当前目录下的一个ph for。txt,然后这个txt xt里面的内容,是一个菲律宾的代码,代码里面它是执行了这个菲律宾info,在这儿的话它进行一个包含。

就会对这个文件里面的一个内容进行一个解析,因为它是一个符合菲律宾语法的,所以它就在这里,在下面这个地方,就这个头就表示它是执行了这个patch info,这个函数嘛,这个需要演示吗,前面文件上传有讲过。

嗯好,那就不演示了,这是列举了一些敏感文件的一个默认路径,那如果他更改了的话,就不是这个路径,如果没有更改的话,它默认路径就是这些,大家了解一下就好,这给了一个他的一个利用方式。

这个的话是配合一个日志文件的,这个给大家看一下,这个大家需要过一下吗,就是需要给大家演示一下吗,如果需要的话,就扣个1号,这个其实是什么意思呢,它包含一个日志文件,其实是,我们现在在这里输入的这些内容。

就是我们刚才访问的这些内容,其实他在他的日志服务器那边,他的日志里面是由记录的,那比如说我们这个p h p study的话,他在这个阿帕奇里面这个logs,这个access log。log里面。

就记录了我们的一个一些可以拉到最后面,你可以看到这个最后面是不是,我们刚才输入的一些内容对吧,那在这儿的话,如果我们知道服务器那边,它的一个日志文件的路径,然后我们可以随意访问一些内容。

在他比如说我们去一个别的地方,在这里的话它这有一个参数,所以我们在这儿可以输入,我们自己的一个内容吗,我们如果在这个地方输入一个p h p h p info,这样的话我们把这个东西回车之后。

他是不是会把这个url,记录到他的一个日志文件里面去,那比如在这个ph study的话,它就会记录到这个access。log这个文件里面去对吧,那我们接下来如果这个网站它存在一个文件,包含漏洞的话。

我们去包含它的一个日志文件的路径,是不是就可以执行我们在这里写的这个代码,我们回车,这它它有什么显示,没有关系,只要他把我们的这个记录到它的一个文件里面,取就好了,那在这的话我们尝试进行一个包含。

因为我们是在本地,所以就会知道它的一个相对路径,它相对路径其实是在我们的3w根目录,还要上一级的这个阿帕奇路径下的logs,所以刚才是三回退三个,三个目录的话,这就要回退四个,这这里有个记录我就不说了。

就直接打这个就是阿帕奇log杠access。log对吧,嗯这里的话就会有很多,我的一个记录,甚至前面的一些,它都有一些显示,我们拉到最后吧,因为这个文件太大了,他把我之前的一些。

你可以看到其实它的这个地方看得清吗,就是这个地方他并没有,因为我们是最后访问的那个什么,就是这个网址的这个地址的嘛,对吧,就是我们刚才随便访问了一个,然后但是他这并没有进行一个执行,我把它删掉吧。

先把它里面的内容,这是,我在这里重新新建一个吧,然后现在这个是没有内容的,我们重新,重新来过一遍,刚才是我们随便找了一个地方,就是这个地方吗,然后这有一个参数,我们在这个参数后面,直接去。

或者是你不找一个参数,你只要是在这个站点下面,然后你直接把它的路径更改为,他只要能记录的话就都行,嗯虽然他这报的403,因为我们根本就不存在这个,这个是不能删除的吗。

好吧,他现在,我把这个还是还原吧,我们可以其实可以直接在这个后面来看一下,就是直接打开这个文件来看一下,拉到最下面,这个太大了,嗯他还是记录在了这里,那我刚才新建那个就是没有用,然后在这的话。

这个其实我们刚才8。31的时候,然后访问的一个网址,你可以看到它在这儿并没有把我们的,就是中间这个百分号二零的话就是进行了,还有这个3%c 31%的话,就是进行了一个url编码吗,并不是我们一个尖括号。

问号p h p h p h info,又见括号的这种形式,所以它在这里并没有进行一个解析,那有什么方法可以让它不进行一个url编码呢,因为它这不执行的原因,就是因为在这里的话,它存入这个文件。

就是它记录这个日志文件进行一个记录的话,它是记录的是你进行url编码之后的一个内容,你在这儿,大家有什么方法让它不进行一个编码吗,刚才弄那个入职文件,可能耽误了一些时间,然后大家现在有什么想法吗。

如果有想没有,前面我们看到就是在这里这个文件包含在这,我们不是包含了刚才那个日志文件嘛,就是这个嘛,然后他不是好长一串,然后中间可能会执行了这个ph info吗,那是我之前的一个记录,不是我们刚才的。

是我前面这一大堆前面的一个记录,但是他最后并没有执行这个菲律宾info这个函数,是,因为他就是以这个url编码的方式,存入了这个文件嘛,所以他并没有进行一个执行,因为他根本就不能判别。

这个是不是一个菲律宾的一个代码,它没有那个小于问号ph一那个开头,所以在这的话我们其实就可以通过利用,我们就是你使用一个拦截代理,在这边的话,哦对这里进行一个,对呀是,你可以看到它在这的话。

在这个get这这个url,他这里就已经是进行url编码之后的一个内容了,所以我们在这儿把他的这些东西改掉,改为我们一个正常的一个字符,然后再进行一个forward,因为刚才开了一个代理。

所以他这需要我重新登录一下,这个时候我们再来进行一个包含,就是那个阿帕奇,小店log,logo是,嗯我们直接看最后面,在这个地方它是我们来看一下这个文件里面,嗯我们前面的一个记录是在,为什么。

这个地方对吧,我们前面一个存入的还是这种使用了url编码的,然后后面这个的话,就是我们就是使用那个代理bb,然后拦截之后把它更改为正常的一个字符,之后存入的对吧,所以在这的话它就进行了一个解析。

这个后面就是我们那个后面的一些日志,就是我们,我刚才不是进行了一系列的登录操作嘛,然后他也记录了进来,这个大家有看懂吗,没有看懂的话,我们来看一下ppt吧,可能我刚才弄那个,弄那个日志文件。

然后大家可能看的有点晕,其实整体的意思就是我去,如果这个网站存在一个文件包含漏洞,然后我就去这个网站访问一个,比如说在这里的话就是有一个问号,菲律宾info这样的一个代码,然后他就会把这个。

记录到他的一个日志文件里面,那它直接存入的话,它是会进行一个url编码的,所以我们使用bob,把他的这些字符给改为我们正常的一个字符,然后使它能够进行一个解析,所以在这我们再去。

引入的时候他就能有一个正常的解析给我们,我这么说,大家听明白吗,对是的浏览器会对特殊字符进行编码,对它会对url里面的一些特殊字符进行编码,为什么会产生一个url呢,比如说我们访问百度的时候。

你去输入一个中文,啊我们要那样看,我们就是要,嗯大家自己去实现吧,因为已经43了,你去就是开一个代理,你去看的时候,你会发现百度这两个字,它其实是使用百分号加一串,一串加一个字符。

百分号加一个字加一个数字,然后这样的形式去进行一个传输的,它就是嗯对这些特殊字符,以及它不识别的一个字符进行一个编码,进行一个url编码,它会进行一个解码,对,我们接下来来看下一个。

下一个这个的话就是利用这个file协议,那这个file协议的话,其实就和前面我们直接进行一个包含,其实是差不多的,也是显示一个本地的一个文件,那在这的话我们使用这个file c盘下的windows。

然后windy i i,这也会有一个这个文件的内容,显示给我们右边这个p h p。i里面,我框的这两个参数,其实是我们等会远程文件包含需要用到的,这先不提,接着是讲一个这个菲律宾filter协议。

这个协议的话就是本地文件包含,他利用这个协议主要是进行查看源码这种操作,我们刚才不是说直接包含我们的一个ph p文件,或者是嗯符合他p h语法的一个文件的话,会被解析嘛,然后我们不能看到它的一个源码。

只能看到它解析之后得到的一个结果,就比如说我们刚才那个菲律宾语后,它就会嗯写写,就是给我们显示出ph info,这个函数执行之后的一个结果,我们不能看到那个文件的一个源码。

那有时候我们需要看这个嗯p h p文件,它是怎样进行一个逻辑处理的,我们就是想知道那个文件它里面的内容是什么,它过滤了那些字符怎么怎么的,我们想看那个pp h的一个源代码的话。

就可以使用这个协议来进行一个读取,它的语法其实是,它的语法可以看到这个后面这个地方,它是写一个菲律宾冒号,然后filter,这个后面就表示它是使用怎样的一个转换器,在这这个convert点后面。

就是使用一个base 64编码,然后这个在一个斜杠,resource,就等于这个include这个它整个这一串的意思,就是我们要包含的这个源文件,resource就是这个include。p h p。

然后它是怎样进行一个读取的呢,我们就使用base 64加密进行一个读取这个文件,所以说它它在这儿显示给我们的文件是一个,就是这个include。p h p,进行base 64加密之后的一个结果。

就是我蓝色框住的这一个部分,这个大家能理解吗,你既然能得到他一个源文件,它是进行一个base加密的,所以我们就可以随便去找一个,base 64解密的一个网站,拿着一串数字就是字符进行一个解密。

你就能得到这个include。p h p,它的一个源代码,这是它的一个主要作用,这么说大家能理解吗,就是这个p h p filter,它主要是有两个参数,第一个的话就是这一个。

你是使用是怎样的一个转换器,对它进行一个编码的,第二个的话就是你有一个必要的一个参数,就是你要嗯现在你要顾虑的一个刘是哪个文件,这里的话就是这个include文件。

然后你resource等于后面就可以写,你想要读入的文件名称,ok那我们就接着往下讲,嗯这个的话是使用一个压缩文件流的一个协议,它利用的条件是我们菲律宾的版本,需要大于5。三点。

这三个协议它都属于一个压缩流,它们可以进行一个访问,访问我们压缩文件里面的一个子文件,它的格式是zip,然后冒号斜杠,他这里需要使用的是一个压缩文件的绝对路径,所以说他这个协议可能会比较鸡肋。

因为我们很少会知道一个网站,它的绝对路径是怎样的,然后加一个井号,井号,后面跟上我们一个压缩文件类的一个子文件名,为什么这个其实是写到这是为什么呢,就是写的这个本地文件包含漏洞利用方式。

这它其实就是在这个ph info。z i p,我们这不是压缩文件吗,我们可以把它的后缀改为,比如说我在这演示的这个jpg,然后或者是其他的一些,你符合上传的一些文件名,但是你在这个压缩文件里面。

这个ph info。txt里面又是我们的一个ph代码,所以说它最终进行一个包含的话,就会直接去包含我们这个ph info。txt,因为我们使用这个zip协议,然后就可以访问到我们压缩文件里面的。

一个子文件吗,然后我们把这个这一串传入我们这个配置,等于这个的话,它就配置等于这个gp最长串的话,它就会对这个ph info。txt里面的内容,进行一个解析,现在这是有一个需要注意的地方。

大家都知道我们之前学那个xs s的时候,也有说过,这个型号的话,就会表示我们仅仅只在客户端进行一个,后面的内容,它就不会传输到服务端了嘛,所以在这的话我们需要对它进行一个url编码。

编码成这个井号进行一个url编码的话,就是23%,就是进进行一个编码之后才能进行一个访问,这可能是需要注意的一个小地方,接下来看下一个协议,下一个协议其实是和g i p协议。

就是刚才那个压缩协议是类似的,它也是可以去访问,我们压缩文件里面的一个内容,但是的一个子文件,但是它是可以使用相对路径的,所以说它这个协议,可能会比前面的那些协议要好一点,利用更广一点。

那在这的话它使用的一个格式,就是这个ph r冒号,然后斜杠它的一个相对路径,然后再加一个斜杠,这个斜杠后面就是一个压缩文件,里面的一个子文件名,那在这儿我给大家演示的话,就是,这个给大家演示一下吧。

嗯我这已经存一个了,所以我就直接拿这个来进行一个演示吧,我把它放到桌面,然后在这的话我把它的后缀给改了,这个时候我们首先要将它一个进行一个上传嘛,所以在这里的话,我们先到这个嗯某个上传的一个页面来进行。

这个地方把它打开,然后上传,在这的话它就已经上传成功了,我们需要加这个ph啊,这个协议,后面加上我们的这个p h p info。txt,你可以看到在这里的话,它就直接执行了我们这个菲律宾info。

点击ip,因为我后面把它的后缀名改成了j g i p嘛,然后里面的这个ph in for。txt的一个内容,然后我们是需要使用这个协议,这个压缩流协议来进行一个访问,才能访问到它里面的一个内容的。

我刚才也是,大家有看懂吗,关于这个利用的话,这个这个协议的一个利用的话,课后作业那个司机,嗯你今天的课后作业,就是这个web安全之文件包含的理解。

这个毕业证就有一个这个协议的一个利用,大家可以去做一下,我刚才操作,大家有看懂吗,如果看懂了的话,就打个一,如果没有看懂的话,就打个二,行,那我们接着往下讲,嗯我这这个ppt里面其实也给了一个过程。

就是首先上传,然后再进行一个包含,然后我接着在这去访问了这个shell。p h p,然后我们f 12看这个网络的时候,这他的状态是200的,说说明已经有这个shell点菲律宾了。

那为什么会生成这个shell。p h p呢,其实就是因为在我们这个压缩文件的test,点p h p里面,他这不是去进行了一个包含,包含我们这个test。jpg里面的test。p h p吗。

它里面的内容其实是把我们这个一句话,木马写入到我们这个shell。ptp里面了,所以他在这里的话就会生成一个shell点,菲律宾,接下来的话就可能大家就可以使用一些嗯。

菜刀等其他的一些连接工具进行一个连接,第二个的话就给大家讲一下,这个远程文件包含包含一个远程文件,嗯可以看到我这个红框框,这,其实他就和本地文件包含,就有一个很在格式上就有一个很大的区别。

我们前面的时候是并没有使用一些htp这种协,议,这个这种协议的,而是只是使用ph p的,这这种p h a r等等这些文件流的一些协议,来进行,访问或者是这种点点杠回退。

对这种方式来去包含他本地的一个文件内,远程文件包含的话,他就可以去它如果存在远程文件包含漏洞,它就可以去包含我们这个远程服务器上的,一些文件内,在这的话我就直接去包含了这个嗯,192。168。1。

23求下的一个ph info,然后他这执行成功了,那其实远程文件包含它漏洞,它存在是有两个条件的,第一个条,第一个的话就是这个参数,这个alone ui l f open等于on,这个是要开启的。

其次就是这个这个参数,along url include,这个参数也是要开启的,这两个参数是在这个p h,p。i n i这个文件里面去进行一个设置的,那后面这个参数它在ph 15。2之后,默认为关闭。

所以说可能有时候远程文件包含的话嗯,就比较难利用,这也给出了一个包含远程的一个shell,那在这的话我就直接去进行包含我们本地的,因为我这就是在本机进行实验吗,所以在这里的话,我就去包含本地文件夹下。

3w根目录下的一个remote shell,点txt,在这个txt里面的话就是还是跟刚才一样啊,其实我们先把这个一句话木马存入到这个payload,然后我们进行以写的方式打开demo,点p h p。

然后将我们这个payload写入我们这个文件里面,然后再关闭我们这个文件流,可以看到在下面的话,就是我们去进行一个包含之后,它就会在我们这个192。16,3。1。239的这个fi路径。

下面就会生成这个demo。p h p,然后它的一个内容的话就是这一个,这个一句话,木马就是我们这个po的写入的一个内容嘛,接下来我们可以使用菜刀等级,或者是其他的一些工具进行一个连接嘛。

远程连接原件这种东西来进行一个链接,然后这里的key的话就是这个cmd,接下来就还有其他的一些方式,就是p h,然后input这个协议,这个协议它利用的话,也是需要开启这个后面这一个参数的。

这个along url l include这个f open的话,你可以开启,也可以不开启后面这个参数,开启它才能够进行一个利用,那他这个协议,它主要是用来接收我们的一个post数据。

他会将我们post请求中的数据,然后作为p h e代码来执行,在这的话同样是刚才那个fa路径下,这个存在文件包含漏洞的一个点啊,然后这个配置参数,我们就在这个后面直接输入一个p h p冒号。

然后这个input后面就不要接东西了,然后在post数据里面输入我们的这个内容,这个内容的话,其实也是将我们后面这一串payload,写入到我们这个shell。p h p里面去嘛,然后这样执行之后。

我们执行之后,你会发现你的就是目标服务器上的这个fi,目录像,它会有这个shell。p h p的一个文件的生成,然后它的内容就是我们这儿输入的这个一句话,木马,这个大家这些其实大家都可以自己。

课后去进行一个演示,自己去进行一个尝试,大家这需要我进行一个演示吗,如果需要的话,就大家就打个一,如果不需要的话,就扣个二,需要是吧,其实他演示也很简单,然后接下来在这个post。

就直接使用这个hank bar,先加载,就是他的这个url是存在文件包含漏洞的吗,然后我们直接去,输入这个ph input这个协议,然后我们把要写入的,要执行的一个ph代码写到他的。

这个我们大一点写到这个body里面,这是我们的请求主体里面吗,直接把这个复制过来,再进行一个执行,嗯它这是一片空白的,那我们去访问一下这个shell点,ph看看是不是200。

嗯这个其实就是已经我们看一下little work,这里就是一个200的一个状态码,说明我们就已经生成了这个shell,点p hp这个文件了,接下来大家可以使用一些嗯远程连接的软件。

进行一个软件进行一个连接,因为我这写入的是一个一句话木马嘛,然后他的一个key就是这个叉叉叉,s e r就进行一个链接,我们就已经把这个一句话木马,写入到这个shell。ph里面去了。

这么说大家能理解吗,如果能理解的话,就把扣个一,不能理解的话就扣个二,它其实这就是将我们这个文件流,转换到了我们这个post数据里面,他使用这个菲律宾input的话,就是这个意思,我们接着往下讲。

这个的话是这个date协议,它是将也是将我们这个原本的一个文件流,重定向到了用户可控制的一个输入流,也是要在那两个参数,就是刚才给大家说的这两个参数,along ul f open。

以及这个include include,都是要开启的状态下才能够正常使用的,内在这的话这个date协议,这个后面的话就是有一个ph info,我这个后面没有加问号,尖括号闭合,这个也是没有关系的。

你只要前面能进行一个识别就行,所以的话他在这里执行的就是我们这个date,这个逗号后面的一个内容,同样我们可以进行一个贝斯鲁斯加密,这个的内容就是我们这个上面的一个内容。

然后他在这里的话也进行了一个执行,这些大家都可以去尝试一下嗯,环境的话就是那个文件包含漏洞,实验室里面的一个环境,我们接下来来看一下这个绕过方式,这个大家如果这个det协议我就没有演示了。

大家因为我演示的话也是直接复制一下,然后到这边给大家看一下,效果,就和我ppt里面其实是一样的,大家自己去演示一下,可就是去实践一下,可能那个感受会更强烈一点,我就不给大家演示了。

接下来我们来看一下绕过方式,第一个的话就是本地文件包含,它的一个绕过方式,可以看到在这个上面这一串代码中,这个include里面它是会将我们这个get,然后file的话它是会插在这个inc这个目录。

以及点htm这个后缀中间的,意思就是说我们传入的这个file,比如说我们传入菲律宾info。p h p,它就会保存到我们这个i n c就会去不是保存,是去包含i n c目录下的ph pf。p h p。

然后再点htm这样来进行一个包含,这样的话可能就不能有一个,因为他这个后缀已经指定了嘛,所以你可能就不存在那个文件,然后他就会报一个404的一个错误,出现给我们,那我们如何进行一个绕过呢。

其实这个前面这个其实就很好绕过,我们用点点杠回退到上一级,如果他没有过滤点点杠的话,就可以回退到我们这个c前面上面那一集去嘛,那这个后缀点htm这个后缀应该怎么办呢,这里的话其实有几种方式。

第一种的话就是零零百分之零零阶段,它使用也是有条件的,就是第一个的话就是这个魔法,这个参数是要设为关闭的,这个也是在我们这个那个ph那个地方,去进行一个设置的,把它设置为关闭。

而且他的菲律宾版本是要小于5。3。4的,比如说在这的话,就可能我们刚才我们前面不是说不是,只要三个回退符号就可以了吗,就是那个p h p for。p h p去引入,去包含他根目录下的时候,我们不是三个。

三个回退符号就可以了吗,那在这的话,因为它前面有这个inc,所以我们多一个回退符号就好,那后面这个的话,我们就使用一个00%进行一个阶段,那这个00%阶段的话,我在下面给出了它的一个简要的一个原理。

就是菲律宾内核,它是由c语言实现的,因此使用c语言中的一些字符串处理函数,在连接字符串的时候,零字节也是作为字符串的结束符号的,所以说你这它会解码为0x00 就是零字节嘛,它就到这个点。

菲律宾就不往后面读了,就因为他就他就他就它解解析的时候,就以为这个字符串已经结束了,它就不会解析到这个后面点htm了,就是这个意思,然后从而就达到一个绕过,然后进行一个包含这个p h p fdp。

h p这个文件就不会读到后面这个了,然后这个条件的话,这个这个参数如果开启的话,它会将00%转译为反斜杠,零的两个单体字符,它就不具备了一个截断功能,所以说我们这儿的条件的话是要把这个为关闭。

而且他的菲律宾版本是要小于这个的,这个00%阶段,目录遍历也是差不多一样的一个原理,接下来的话是有一个路径长度的阶段,嗯大家这些看一下就好,其实因为他的条件,p h b版本要小于5。2。8。

然后windows目录下最大长度为256个字符,超出的部分会被丢弃,所以说你一直点杠点杠我他后面的话,后面的这个就会被丢弃,它是这个意思,下面这个也类似,这个大家了解一下就好。

第二个的话就是远程文件包含漏洞,的一个绕过方式,他在后面的话同样是拼接上了这一串,所以在这的话其实它就有几种绕过方式,第一种的话就是我们在htm就是h配置后面。

这个hd p local host gun shell,点p h p里面,在这个后面加一个问号,那在这个后面加一个问号,传入到我们后台的话,后台服务器,然后进行拼接的时候,他其实拼出来就是我们这个。

就是这一串,再加上这个,那他在这的话,它就把后面这一串就作为我们这个shell,点p h p的一个参数传入进来了,就不能起到一个,就是拼接到一个目录的一个作用了,所以说这样就能达到一个绕过的一个原理嗯。

我这也有说,他就将这个作为了我们这个的查询字符串,就是问号后面的一个,查询字符串,同样它这个我们使用23%,20%也是同样的一个原理,一个效果,接下来我们给大家讲一下,文件包含漏洞的一个危害以及防御。

其实危害和防御应该大家有一些体会,首先我们来看一下危害,危害可能就是说获取我们系统的一些敏感信息,敏感目录去进行一个包含的话,就可能泄露嘛,第二个的话可能会执行一个任意命令,甚至获取服务器的一个权限内。

防御的话,首先我们肯定是不能使用一个动态包含的,其实我们刚才漏洞出现的根本原因,就是,因为在那个我们前面,不是给大家演示的那个靶场,它其实就是这个配置是我们能任意输入的,如果我们能够进行一个过滤。

或者是你只限定为包含哪几个文件,或者是你只能包含哪个目录下的一个文件的话,我可能就会就没有这么这么大的影响,然后在没有需要的情况下,是设置这两个参数为关闭状态,第二个啊。

就在这儿也有说说包含的文件进行限制,使用白名单的方式,或者是设置我们允许包含了一个目录,这个使用这个参数来进行一个设置,这个open base de,第三个的话就是严格检查用户输入参数中。

不允许出现这种点点杠之类的这种目录跳转符,第四个的话就是严格检查变量是否初始化化,第五个的话,不仅仅是要在客户端进行一个数据的验证,以及过滤,关键步骤,还是要在我们服务端,客户端的话很容易就能绕过吗。

我们服务端后台去进行一个过滤嗯,最后的话是大家的一个课后作业,嗯有两个题,到时候大家把文档发给我们的,班主任,这个打开是啊,我想我刚才讲的内容,大家有没有听懂的地方吗,大家如果有没有听懂的地方的话。

就打个一,如果没有的话,就打个二,没有人理我,那行,行那啊,这个是我们的一个课后作业,就是其实和你们之前的一个是在一个网址的,就是这个四七开头的这个,这里有两个实验。

大家最好如果能把两个都做出来的话。

蛮厉害,可以去尝试一下,首先给大家一个提示吧,就是如果嗯最终其实是可以就是get shell的,所以大家尽量能get out的话就去get out,然后在这里的话你打开这个。

打开这个a就是这个的话它这里是一片空白的。

在这我们去查看网页源代码,你会发现有一些东西,那在这里的话它就有一个提示符,就是这个include。f。p v,所以在这里的话我们直接去进行一个访问,嗯然后他这又有一个tips tips的内容。

就是说它的参数是file,那就按照他的提示走了,所以在这我们家,嗯他把我的排放的都现实,就啊,我们就可以在这个file后面加上我们的一个内容,比如说我在这include。p h p。

你会发现它就包含了很多次,我们这个include。p h,我提示就到这儿,然后接下来的内容的话,大家就自己去实践,然后明天把嗯对,然后明天把这个扣作业,如果大家能写个文档,就最好写个文档。

然后交给班主任,今天的课程内容,大家还有什么没有弄懂吗,如果没有的话,就暂时先下课,明天再接着和大家说,因为大家应该是没有什么问题了,那嗯今天就先这样吧。

P21:第19天:文件包含漏洞防御及实操讲解 - 网络安全就业推荐 - BV1Zu411s79i

啊。

你们能看得到我的屏幕吗,很善良,我的手越肮脏,眼神越释放,好的,然后现在八点钟了嗯,你们前面做了这个的话,然后有同学想要进来讲解一下吗,如果,我看你们就有同学做的还蛮好的,所以有没有想要。

想要出来就是给大家讲的,就点那个举手就好了,没有吗,你们听得到我声音吗,用腾讯要举手,然后给大家讲讲吗,讲讲我们昨天留下的那两个课后习题,嗯不知道自己做的过程对不对,没关系啊。

可以就是可以给大家分享一下嘛,然后如果就大家一起学习嘛,没有没有要举手的吗,那我从交了作业里面来挑一个好吗,就是这些这么多人交了作业的话,来挑一个,或者是说就是从今天来的人里面挑一个,然后你举手。

然后我来,我在这边按照你的意思来进行一个操作,为什么没有任意,那我那我就点一个好吧,那我就随便点一个,然后大家来,来看一下他的操作,你看见谁吗,要不就点你吧,老橙子是吧,你说你说话说得最多。

来给大家演示一下你是怎么做的,然后你是怎么想的,嗯哼,听得到,大家听得见吗,大家如果听得到的话,就打个一,嗯行,那你说那你讲吧,那你开始吧,大家听得到,点击a那个就第一天,听得见吗,嗯嗯听得到听得到。

点击这个,然后呢,嗯之后呢将将index dhtml改为include菲律宾,没事,那你为什么会就是查看邮件,查看元旦吗,那就看到了这个提示嗯,哪个提示,因为一般的话就是。

就是下面会有一个up roll的点p嗯,然后啊我就用这个去嗯,尝试一下,看能不能登录,就用还是用那个文件夹对,在include点菲律宾后面好,可以把这个改了,改成那个阿波罗这点p h p也可以,这样吗。

对,然后就发现我们可以上传文件嗯,然后我就尝试上传了一个菲律宾文件,然后发现上传不了,然后呢就再上传了一个图片码啊,带木马的一个图片嗯,带木马的一个图片你是怎么写的呢,就用cmd的方式。

将嗯一个菲律宾代码加一个图片合并起来,有copy,就那个代码,copy,然后那个图片,然后追加一串那啥进去是吧,对对对,就制作好那个啊图片码文件嘛,有没有现成的,嗯你是这个人吧,你是这个对对。

这个这一份交的作业是吧,是的,也没有写,对我直接直接因为是那个是之前做好的吗。

嗯嗯嗯好吧,为大家有记得之前声称应该是文件上传的时候,老师有讲吧对吧,然后有记得那个那条玲玲怎么,妻子的话就在这边打出来,我们也,好有同学在那里打出来了,嗯所以这个要先有一个图片。

点保存。

嗯这个一点p h p里面你写什么。

呃就菲律宾的一个啊,前头跟尾,然后evil e v e l,然后是那个钱的符号,这样吗,是的,然后要将这个嗯,你可能要要到当前就是桌面的这个文件夹里面,去进行这个cmd,对大概这个命令窗口,copy。

那就上传这个文件,看有没有,嗯然后就到这个地方,然后选择文件,嗯接下来呢,那接下来就还是切回到刚刚那个include点,菲律宾,嗯嗯在include点菲律宾后面啊,问号等于,然后他这个值应该是fail。

然后等于那个upload斜杠,好一好2222点jpg,因为我刚才对,然后可以用这一串去新lab,或者是在当前页面做一个那个啊psp代码测试,也可以就可以知道成功与否,所以说我们前面的话就比较简单。

在这边,然后在这个里面加一些比较测试的一些语句,是吧,还是怎么做,我就直接拿这个url去西奈服那边打开,去菜刀工具那边打开,嗯添加是吗,对url就这一个的url复制,aa,然后脚本类型修改psp。

双击好成功,ok那大家对这个题目有什么不了解的吗,然后嗯怎么就退了,老橙子应该还要负责解答呀,完成了呀,大家就是对这个第一题有什么不懂的地方吗,就不了解了吗,老陈老陈子,你要负责完成大家的疑问啊。

如果大家有疑问的话,就扣个一,如果大家没有疑问的话,就扣个二,我都没有找到那里,想跑,好吧,那这个第一题大家或者有其他的一些思路嘛,就跟老橙子是不一样的,现在最后一小时,不用图片嘛都行吧。

嗯那你要不然来给大家分享一下,你点那个举手就是g wolf,其实我不会读你这个名字,嗯你说嗯大家能听到吗啊这我觉得就把那个,嗯行,你说我觉得这是就是上传一个p h p,那个他的一个代码。

然后改bp的时候改一下它后缀就可以了,我们直接上传一个,就拿刚才那个一点菲律宾啊,对或者把菲律宾改为jpg,就直接改后缀就可以,然后在,在这边拿个包是吧,对,这或者你直接改后缀改为jpg就可以。

直接把它改成,jpg png后的切,老师你那个名字写好一点吧,就是那个二的话,我可哦不一定能它不一定能显示对,就改为一个其他名字吧,对,38425都可以对,然后上传这个文件,对对对吗,嗯然后呢。

呃然后一样的效果就直接直接就是引用,直接包含这个文件,可以因为它就是它包含的时候,他只是去查这个文件里面的,有没有这个菲律宾标志,所以不管是什么后缀都可以,这个样子是吧,对,然后用你用它大量下。

那大家对这个有什么问题吗,怎么上传,嗯那陈莎你要不要举手来,就是给大家分享一下,嗯你说个话试试,喂嗯大家能听得到他的声音吗,ok你说我是直接用菲律宾为协议去读他源码的,嗯来到这里,然后呢。

我把payload发出来,啊你把我删了,嗯应该读应该读那个upload那个页面的源码,我发的是include的页面里,对upload是吧,对,没关系,我们就先先读一下这个当前这个页面了吧。

然后给大家看一下是使用这个菲律宾filter,这个是吧,对,他a46 64去解码,就能看到它的源码,我就直接在这解码了,这个就是include文件的一个源代码,嗯你接着说主要是upload的。

这个没什么,行,把这个改为upload是吧,就其实大家从刚才那个地方,其实我们查看源代码的时候,这边也有一个就include upload。p h,所以你在这儿的话,就会发现有这个有这个文件的存在。

所以在这里的话他直接是使用这个filter p啊,不呸p h p filter,然后这个伪协议,然后在这里就能查看它的一个源代码,然后执行是吗,对填码后看它过滤的规则,然后我再去搞的那个图片嘛。

嗯它其实是从这儿开始的,这个前面是乱码,是因为我们这里有这么一串,所以它解码就变成了乱码了,你接着说,就发现它是过滤,他只能上传gif jpg,jpg和png。

然后对content type属性也做了过滤之后,操作就差不跟前面差不多去弄了,嗯嗯就是你通过查看源代码,知道了他过滤了哪些,它的过滤规则是怎样的,然后通过这个过滤规则来进行的一个绕过是吧。

然后就和前面的步骤是一样的,对嗯行,大家有没有听懂的地方吗,这个,如果有没有听懂的地方的话,就打个一,如果没有的话,就敲个二,嗯那看来大家都做的蛮好的,有没有听懂的吗,你就先敲个一给我们看一下。

然后再发出你的问题,好像没有人打一,那我就在这给大家顺一遍吧,从头到尾,就前面几个同学其实都已经讲的,没办法显示那个白色s码,怎么怎么会呢,你是不是答错了还是怎么着,就是这一串敲错了,懂了就行。

然后我给大家串一下吧,嗯首先我们是根据提示找到了那个include,在点p h p,就是刚开始在那个,index。ph ph,就找到了这个include点评app,所以尝试进行一个访问。

这样的话又有一个提示是说它的参数是一个file,所以我们可以在这个根据它的提示来,它的参数值这个file,然后包含我们现在当前的这个文件,是试试看看看能不能进行一个包含,发现是可以的。

而且就是当前这个文件的一个重复,我们通过右键查看源代码的时候,有一个upload的点p h p提示给我们,所以在这的话,我们就直接去访问一个upload的点p h p,接下来的操作,其实就和刚才一样。

然后是查看它的一个一个源代码,发现他的一些过滤规则,发现它只允许上传图片格式的一个文件,前后端后台的判断仅仅判断了他的一个后缀名,然后文件类型以及它有一个这张图,就是刚才解码之后的这个以及它的一个长度。

所以在这的话我就直接上传一个内容为p h p,p h for的一个图片码上去进行包含,就直接可以执行同样上传一个这样的一句话,木马进去进行包含,然后对就是这样好,那第一题就先到这儿结束。

第二题的话,大家有人要过来给我们分享一下你的思路吗。

如果有的话,就直接点举手。

没有吗,第二题,因为我点吗,大家有做的好的呀,我看了,第二题有同学要分享吗,没有啊,那陈上同学,你做了第二题吗,没错,那孙宇航同学,你做了第二题吗,今天是杰克,没,那张喜同学,你做了第二题吗。

你们都没有做第二题的吗,张喜同学,你有做吗,天天都要搞定,那你要加油哟,那,g wolves同学,你要做第二题吗,嗯大家能听得到他说话吗,可以大家都可以,你说,啊好的,我就先点开那个第二题哦。

已经点开对吧,然后他对老师已经写了,但是就是啊fire in hole,然后因为它提示这是一个pcp文件,所以就就可以猜测它是后缀是pcp,就是他会自己加一个后缀对吧,然后嗯你的意思是你的意思是说。

啊你的意思是说他在后台会加一个点,菲律宾的一个后缀是吗,对对对,因为它提示,所以我就拆了,然后他确实是这样的,然后用pcb 5协议读到了源码嗯,同样是使用一个菲律宾对,读哪个文件,读当前这个文件吗。

还是读对啊,pc对,就这个把pp删掉,这就是菲律宾删掉对,为什么要把菲律宾删掉呢,啊因为它会自动拼接一个p7 屏,嗯嗯那就这样回车对,然后,进行解码,这这不对吧,你复制的,反正零负责好像不太对对。

就下面的下面那个被64的编码,为啥不弄的嗯,我也感觉不太对,把那个tips删掉吧,啊然后发现他嗯p c a r协议没有过滤,然后也暂不支持,那个就是回到父母都对,这就体现出两点。

一个是可以用ph a r协议,因为这他没有就是在这边使用这个函数,进行一个正则匹配的时候,没有匹配到那个ph a r那个协议,接下来还有一个是这不能使用复古董,这两点被过滤了啊。

就不能使用这个目录跳转符是吧,对对,对,然后呃就我这里出现一个问题,就是我没发现,就是第二关也有那个up node,所以我用了第一关的嗯,你用了第一关的一个已经上传上去的,一个对文件。

第一关的第一关的up nodepp上传文件,所以就是说嗯,用的第一关的这边的upload。p h p对,然后然后同样我们要先打包一个问题,我先在外面打包一下就完了,怎么打包嗯。

啊把那个就是psp刚刚那个test改jpg改为呃,我现在改不改哦,改改一下对啊,改成天taste p p h p对,因为最后拼接的子弹是菲律宾对,然后再打包一下,就就把一个文件打包或者加一个文件给哎。

就就打包对,添加到,然后再改为jpg文件就喝醉,对然后然后上传上去,我这把改成另外一个吧,然后免得大家混淆,嗯对然,然后现在是嗯,然后就用那个pg a r c的连接,这个就是咱啊,咱连接这个pc软件。

我直接发那个哦,直接发太好了,对对我,这个我发音对呃,因为因为我现在用了第一关的时候,我想的是那个反正就是用点点把跳转过去,然后发现不可以,就是因为他把这个功率了,然后直接用的绝对路径。

嗯那这个绝对路径是你猜的还是怎么着,就是这个这个以前就算以前有讲过猜的对,他不是阿帕奇吗,这就加上那个,啊啊不是你要先加上那个哦不对,我是那个test。jpg,对不对,case。jpg对。

然后哦我们里面那个啊对,test,我们是对这个test。ph p进行了一个压缩嘛,然后生成了一个test。jpg,然后我后面加了一个001,那在这的话就是test就这样是吗,哦用菜单点一下试一下,ok。

大家有什么不懂的想要问这位同学吗,大家如果有问题的话,就扣个一,大家有问题吗,没有好的,谢谢你,嗯那大家知道第二题的话,有什么别的不一样的思路,或者是说其他的嘛,然后如果有的话,就点这个举手。

没有同学要分享了吗,嗯没有的话,那我就来给大家讲一下,就是来试一下吧,首先我做这道题的时候,同样是使用使用,就是在一里面的一个方法,去查看他的那个源代码,就使用那个hp filter吗,这样。

然后发现并没有内容显示给我们,然后利用文件包含中,就是我们已经知道前面这个,前面这个本地文件包含在这,它是存在一个文件包含漏洞的嘛,所以我就想说把这个点点点杠,然后二,include。psp。

然后前面加上那个filter协议,converter点的就是杠,encoder,resource等,没有十分吗,应该没有吧,但是他在这的话就有一个error的错误给我们。

其实我们前面去就是在第一关去查看它的一个,使用那个ph v filter查看它的源代码的时候,不知道大家有没有印象,就是他把刚才g wolves同学也有说,就是他把这个目录跳转符给过滤掉了。

所以说他在这的话就会有这个eo错误,这个显示给我们,所以说这条路也就截断了,然后。

我们就回到之前的这个地方。

然后观察他这里其实是我后来加了一个提示,就给大家提示一下,这是一个p h p的文件,然后我们看到他后面这个file等于hello,这里的话它是没有加上我们这个点p h p的。

所以就像刚才gros那位同学说的一样,就可能猜错后台那边他自己拼了一个点pk上去,所以在这边就直接尝试一下,就和刚才那位同学是一样的,这样发现确实就是在后面拼了一个点ph,因为这样的话。

他他就把我们当前这个文件的一个base,六四加密的内容危险给我们了吗,这个样子的话我们就查看到了,include,就是二里面的一个include文件的一个源代码,在源码里面也有发现一个upload点。

菲律宾就和一是一样的,同样你在这就是在这个else,就是在这个下面就会发现,他会把我们这个file从get请求url中的file拼上,我们这个点p h p,然后再进行一个包含。

然后第二种就是或者就由一get to shell之后,去查看二里面的一个文件,我们之前不是,不是通过一get down了吗,我们不是可以查看二里面的一个文件吗,嗯你就有点耍流氓啊。

对就这样的话就直接看到他那个文件,嗯所以说之前我们如果拼直接拼上了一个,点p h p,那后台又会加一个点p h p,所以这样的话就找不到汇报一个404的错误。

接下来的话就和刚才的two box同学给大家演示的,是一样的,这也发现了一个upload的点p h p,而且我们同样可以使用这个查看源码,这个伪协议来进行一个查看,查看它的源码是什么。

发现和一里面的一个内容是一样的,就也是只允许图片文件的一个上传,那在这的话,我们通过前面的那种方式去进行一个包含,一个普通的一个就我们前面不是使用的upload的,就上传的那个图片嘛。

这样进行一个包含了,这样就不能使用了,因为我们他在后台会拼一个点p h p给我们,所以这样的话他就根本因为那边他不会,他没有这个文件的存在嘛,所以他就并不会进行一个引入,也就不会我们菜刀也就连不上。

也就不会执行里面的那个一句话木马了,那这样的话我们就可以想到,我们可以使用一个压缩压缩文件,在压缩包里面可以是一个p h p文件,然后在上传的时候,我们更改它的后缀为一个jpg。

就能绕过那个上传文件上传的一个嗯限制吗,上传之后我们使用一个压缩流协议进行包含,就是这个p h a r嗯,我那个p h a r,那个压缩包里面是一个一点菲律宾,所以在这的话。

然后那个一点ph里面是ph info这个函数,嗯接下来同样的就是使用菜刀进行一个连接,嗯整体过程就是这样,对相对路径也能做,第二题可以直接上网吗,嗯这个问题其实刚才已经说了,对。

大家还有什么其他的疑问吗,大家有疑问吗,如果有疑问的话,就扣个一,如果没有疑问的话,就扣个二,就是前面这个第二题我有给大家说明白吗,嗯可以,我可以给大家就是给大家看几个同学的作业嘛。

比如说这个jobs同学,你愿意把你的作业给大家分享一下嘛,就是看一下嘛,如果愿意的话,你就扣个一,那应该是愿意啊,嗯大家可以就是怎么说,就是可以参照一下啊,这个同学的一个文档的编写就还蛮,蛮好的。

大家可以学习一下,就整体看下来就会觉得好标准嗯,就会觉得还蛮还蛮好看的,然后我可能仔细看的就是,这个和这个吧,因为因为后面的作业可能是之后交的,然后我就没有时间看了,大家可以学习一下。

我觉得这是写的比较好的,可以发群里吗,可以发群里吗,你能在群里面上传文件吗,还是我来上传,你能上传吗,然后今天大家如果没有问题的话,其实今天的课程就差不多到这了,大家有有问题吗,还,就关于今天的这两个。

这两个题目或者是说你学到了其他的一些嗯,文件包含了一些新的思路,或者是别的可以给大家给我们分享的有吗,有问题或者是有嗯别的想法的,可以扣个一,然后如果没有的话,就扣个二,作业提示可以再明显一点点。

怎么个冥想,明明显法,好吧,其实我我是觉得自己发现的整个过程,我,我是觉得整个自己发现的过程,如果自己就看到了,或者是想到了,我就会很开心,但是如果是通过别人直接告诉我,或者是怎么样。

可能就那个乐趣又少了一点,我是这么想的,所以我也不太想,就是破坏掉你们的一些兴趣或者是乐趣,嗯所以可能有些时候就没有提示的太过明显,我就想让你们自己多去思考,多尝试一下,嗯如果下次觉得。

确实是有难度的话,我就再多提示一点,或者是说你们可以来直接来问我,好的那还有还有别的问题吗,现在没有了,应该大部分同学都没有了吧,其实这里面有一些同学的作业,我还没有没有看啊。

嗯如果后面你们就是自己再做了一遍,然后把文档补充完整了之后,也可以发给就是重新发给班主任,其实今天的今天的内容已经讲完了,但是就不能提前下课,所以就还得等到九点钟,要不然太阳就来听歌吧,啊没有了。

或者是说你们有什么想聊的吗,或者是别的给大家两分钟时间,对了没有想聊的是吧,嗯尤其是参加什么c t f,或者是听说过什么这种类型的赛事吗,有呀嗯嗯你是想问什么,想问怎么去报名参加还是怎么着。

就比如说有些官网他自己会公布啊,或者是其他的嗯,但是我就参加的不多,啊大家九点了,我可以下课了,如果有什么问题的话,可以私下找我聊,或者是有什么疑问,或者是其他方面的一些事情,也可以就是私聊我。

那大家就先下课吧,好吧嗯,我还在公司呢,嗯好,那大家再见。

P22:第20天:命令执行漏洞-远程代码执行及远程系统命令 - 网络安全就业推荐 - BV1Zu411s79i

做做过多的一个介绍,我们直接开始我们今天的一个课程内容吧,我们今天的话呃,讲的一个课程内容的话是这个命令执行,然后这个命令执行的话,其实呃跟我们之前讲讲web需要的时候,其实会有一些相同的一些东西。

就是呃大家如果理解了web shell的,他的一些工作原理的话,针对于这个命令执行,它的所涉及到的一些函数的话,大家应该会呃应该会比较容易理解,那我们本节课的话主要有这四块内容。

这一块的话是对我们命令执行这个漏洞,做一个基本的一个简介,第二个的话是对他的一个漏洞的一些利用,而第三个的话是针对这样的一个命令执行漏洞,的一些基本的一个防护的一些方法。

第四个的话是命令执行漏洞的一些实验,需要大家自己去进行一个操作,如果有必要的话,可以呃给大家做一个讲解,好的话,首先我们先来看一下命令执行漏洞的一个简介,我们先一起来了解一下它的这个漏洞。

它所产生的一个原因啊,概括的话就是这样子的一句话,就是说,应用它没有对用户输入做严格的检查过滤,导致用户输入的参数被当成命令来执行,好其实啊提到这个用户输入的话,大家可能也会想到蛇口注入这种对吧。

它同样的也是对我们的用户所提交的一个输入,它没有做严格的一个检测过滤,所以的话它会导致数据的一个泄露,以及呃,在这里的话就是会导致我们用户或者说攻击者,它所输入的一个参数。

或者是说字符串能够被当成命令来执行,然后的话就是呃关于这个漏洞的一个危害,主要的话呃有这三点,第一点的话,我们能够继承web服务器的一个呃权限,去执行系统的一个命令。

其实这个的话呃跟我们的一个web shell是啊一样的,这个的话是反弹,需要获得目标服务器的一个权限,第三个的话是呃进一步的一个内网渗透,因为我们想要进行一个内网渗透的话。

我们需要获得这样子的一个uh web share,通过web的一个漏洞来得到它的一个shell,然后的话再才能够去进一步的进行一个,内网渗透的一个工作,第三个的话就是呃呃主要的话介绍一下。

就是呃命令执行的两种,第一种的话就是一个远程的一个代码执行,第二种的话就是一个远程的一个命令执行,他们的话,他们的一个区别就在于,就是呃它的一个函数的一些调用是不一样的,因为业务的一些需求的话。

在这里的话,具体的话是在菲律宾当中,我们以菲律宾为例,在菲律宾当中的话,有时会需要调用这样的一些,执行命令的一个函数,比如说我们常见的ever asset,还有这pi以及replace正则的一个呃替换。

还有create function等等这样的一些函数,大家对后面对前面这两个应该是比较熟悉了吧,就是说在讲web share的时候没错,就是说啊web shell就是我们的一个一句话码的话。

其实也是用的p h p,他们这里的一些执行命令的一个函数,来去进行一个构造的,所以说啊其实呃从一个web shell的一个危害的话,我们也能够了解到命令执行漏洞,它的一个危害。

就是说我们能够得到服务器的一个权限,然后的话对它进行啊用啊,用户攻击者想要的一些操作,然后后面的两个函数的话呃,再等会会给大家做一个比较详细的一个介绍,嗯如果说存在这样子的一个使用这些函数。

然后的话没有对能够被用户控制的一个参数,进行检查过滤,那么这样子的一个页面,或者说这样子的一个功能点的话,就存在这样子的一个远程代码执行漏洞,那我们再来啊分别来呃介绍一下远程代码执行。

他所啊涉及到或者说经常见到的一些函数,首先第一个的话就是这个函数,前面其实我们就有了解到,就说i网函数的话,它是会把我们的一个呃传递的一个字符串,他会作为一个菲律宾代码去进行一个执行对吧。

他那个好形式的话就是像这样子的一个ever,就其实我们那一个一句话对吧,也是这样子的一个构造,l函数括号后面的话是接我们的一个呃字符串,当然的话在一句话码里面的话。

是这里的一个啊字符串的话是使用post,或者是说get的这种这种方法来去进行一个接收,就是说接收啊,有攻击者它的一个传递的一个字符串,也就是传递的一个命令,就是比如像这样子的对吧。

我们只需要像这样子的一个呃马执行啊,不传递一个呃像这一个cmd的一个参数传递啊,恶意的一个字符串就能够执行命令,然后的话呃这里的话只是一个以一个一句话,马的一个形式来去进行一个表示。

就是说如果在一个页面或者说它的一个功能,它有涉及到使用这样子的一个i o函数,而去执行命令的话,它就有可能会存在这样子的一个啊,命令执行的一个漏洞,然后这里要注意的一点,就是二维函数它传入的一个参数。

也就是它传入的这种字符串的话,它必须是一个菲律宾的一个代码,它采才会去进行一个执行解析,我们的一个呃一句话马其实也是这样子的对吧,就我们要传的话是要是一个菲律宾代码。

比如说我们常见的一个pp for对吧,它其实是一个呃以分号结尾的一个pp代码,然后的话这一个函数的话,它的一个这种语音结构的话是非常危险的,因为它是允许任意的执行,任意的一个菲律宾代码的。

如果说没有对他做这样子的一个过滤的话,对我们传递的这样子的一个参数,做一个过滤的话,它是能够执行任意的一个菲律宾代码的,所以的话就呃,如果说必须要去使用到这样子的一个函数的话。

就不要允许它传入任何没有经过验证,或者说没有经过过滤判断他的一个合法性的,这样的一些数据的话,是不要允许它去进行一个传入,这个的话就是呃一个set函数,这个函数的话其实也比较常见,据说这个函数的话啊。

他跟函数其实是比较类似的,sa函数的话,它是呃主要的是这个他会把这里的就是和啊,这里的一个字符串,如果这里是一个字符串的话,就是它是一个字符串类型的话,它就会把它当做当做一个菲律宾代码。

来去进行一个执行,然后这里跟error它不不一样的一个地方的话,就是说这里传入的一个字符串的话,它是啊直接去进行一个传入的,就,然后的话他就会把它当成一个,菲律宾代码来执行。

所以的话他是不需要去以分号结尾,也就是说他不需要是一个p h p的一个代码,然后我们的一个构造的话呃,以这样子的一个asset的一个一句话码,来进行一个表示,就是这样子的,呃然后的话呃。

前面这两个应该不要给大家做一个演示吧,这两个一句话码的话,大家应该都很熟悉了对吧,对于它的一个使用的话,这个art的art的一个意思的话,就是呃我们的一个ph代码里面的话,它有这样的。

就比如说我们这里有一个变量对吧,我们要传一个变量,但是你没有对这个变量做一个定义的话,它就会呃菲律宾它里面会有一个报错,就会有一个提示,当然的话它是不影响的,如果你加这样这样的一个ever的话。

它就会忽略这样子的一些错误,这里明明白吗,呃我们在后面的话再给大家做一个测试吧,后面的话会有涉及到,啊关于这两个函数它的一些一个呃操作演示,它的一个使用,应该不用我再去进行一个演示了吧,大家应该都熟吧。

这其实就是一个一句话嘛,然后的话它的一个原理,这种构造,这样子的一个一句换码的一个原理的话,就是使用的这样子的能够去进行一个执行呃,远程代码执行的这样的一个函数,好的,那么我们继续。

第三个的话就是这个p i g的一个replace函数,这个函数的话它是呃,用于执行一个正则表达式的一个搜索和替换,好我们看这样子它的这样子的一个价,它它是这样子的一个结构。

它是呃搜索这样子的一个subject,在你的一个字符串当中,它所匹配的这一个pattern的一个部分,然后的话以这里的一个replacement进行一个替换,可能这里的话不是很好理解。

我们看一下这样子的一个例子,这里的话就是使用的这样的一个p i e g的,这个正则表达式的一个搜索替换,所构造的这样子的一个一句话吧,看这里吧,看这里的一个中文的一个意思。

就是说这里的话就是一个正则的一个规则,然后的话这里是替换的一个字符,这里的话就是目标字符,目标字符的话,就是说我们要去搜索的这样的一个呃字符串,然后从这一个字符串里面搜索好。

符合这里写的一个正则规则的这样的一些字符,如果符合这个字符的话,就是符合这里正则规则,它所表示的一个字符的话,就会把它替换成,我们在这里所传的这样的一个字符,我们以这里的一个例子为例。

这里的话我们可以看到,这里的话是一个匹配test的一个嗯,正则就匹配啊,这里的一个字符串里面它是否包含有这个test,然后如果包含在一个test的话,它就会把这里的一个字符做一个替换,把它替换到这里。

好的话,这里它的一个呃,能够去执行命令的一个原理的话,就是这个杠一的一个参数,就是这个p c r e的一个修饰符,他是在p period这个p e r l的这个脚本语。

它当中的一个特性。

p r l这是一个脚本语,它的一个修饰符,这一个一这个一的一个修饰符的话,就是就是说啊,当这个函数它在对替换了一个字符进行一个反,应,已反向引用替换之后,然后这里的一个替换的一个字符。

它会它会把它当成一个菲律宾的一个代码,去进行一个执行,然后的话它的一个执行的一个方式的话,就是以这样的一个error函数,去进行一个ever的执行的一个方式,所以说我们这里传递的啊。

不是我们这里的一个替换后的一个字符串的话,是需要是啊一个菲律宾代码的一个形式,去进行一个呃传递,就比如说在在这里,我们需要传递一个p h p代码,传给这个sam d参数对吧,我们传给他之后的话。

它就会它就会呃在这里搜索这一个字符,搜索之后搜索到了这个test的字符对吧,就是匹配到了匹配到了这样的一个test字符,匹配到了之后,它会以这里的一个我们传递的这一个字符串,做一个呃替换替换。

替换的时候的话,他就会把这里这里他呃,这里你传递的这个字符串,作为一个菲律宾代码来进行一个执行,然后的话执行之后他的就说这里的一个函数,它执行之后的一个结果,它是啊。

它实际是以我们这里传递的这一个字符串,它执行的一个ph b代码之后返回的一个结果,作为一个呃它的一个结果,啊这里要注意的一点的话,就是它是呃有一个版本的一些限制的,就是说在5。五点版本之前的话。

是能够适用的,然后在5。五点这个版本之后的话,它是呃被弃用了。

那这里的话我们呃以这样的一个例子。

这句话我以这样子的一个例子为例,其实啊就是刚刚的那个马来进行一个演示。

我们这里直接访问它,其实是我这句话是以一个一句话码的一个形式,来进行进行一个介绍,那我这里想要去让他执行。

我这里传递的一个命令的话,我们其实跟我们去这里。

主要的话就传递这样子的一个cmd参数,然后的话我们需要传递我们的一个,菲律宾代码对吧,因为它是以一个ever的一个形式去执行,我们传递的这样的一个字符,对我们这里一个菲律宾for为例啊。

进行一个执行对吧,嗯没有问题的,好的话,我们执行这个system,执行系统命令的这样的一个函数啊,来执行一个外卖,可以看到它是跟我们的一个一句话吧。

是。

样子的,然后第四个的话就是这个ara,ara map这样的这样的一个函数,而这个函数的话它是,它的一个意思的话,我们以这一个例子来进行一个介绍,我们看一下这样的一个例子啊,这里这里的一个文字的话。

其实可能不是很好理解,主要的就是这一个这一句话,就是说为数组的每一个元素来应用,我们的这样的一个回调函数,我们以这这一个例子为例,我们这里首先呢定义了这样子的一个变量,对吧啊。

f u n c这样的一个变量,然后的话它是通过get的一个方式来获取啊,这样来来获取这个f u n c所传递的一个字符,然后同样的在一个sam比它cm d的一个变量的话。

它是以这个pose的方式来进行一个接收字符的,然后这里的话主要是这一个every map,这里这里他通过这样的一个嗯这一个函数,而我们前面这里的话,我们通过这一个get方式获取的一个。

参数的话它会把它传到这里来对吧,然后的话通过在这里,这里把我们的这里的一个cmd所嗯,这个变量传递给了这个error这个数组,然后传给他之后的话,它会传到这里来,传到这里来之后的话。

他这个函数它会调用呃,就是说如果我们在这里,它,是传递的一个函数,就说它会呃只使用这样的一个函数来去调用,好吧,是调用这样的一个函数来去执行,来去处理这里所传递的一个值,然后这里他传递的一个字符的话。

就是我们这里通过post的方法来去进行一个,传递的,然后的话再输出我们这里他说呃,所调用这里我们传递的一个函数,所执行的一个结果,就这里的话也是通过这一个ai map的这样的。

一个函数来构造的一个啊小马来构造的,一个命令执行的一个码,我们以这一个例子来做一个演示,remap,首先的话我们在这里的话需要传一个啊,以get方式来传一个。

这个像这个f u n c这个参数传递一个字符,那我们想要让它能够达到一个,一句话码的一个效果的话,我们在这里传递的这个字符的话,我们可以是呃,前面我们也说到了这样的一个命令,执行的一个函数。

首先呢我们先传一个get呃,像这个f u n c参数传递一个,比如说传递一个asset这样子的一个值,对这个词的话,它会把它传到这里来,然后的话我们再以post方式来传递一个值,我这里传递的一个值的话。

就是一个菲律宾的一个呃代码好,我们来去进行一个执行,可以看到这里的话是执行了这里的一个啊,pp info的一个呃命令,我们以这里我传递的一个值为例,来去对它这里的一个代码做一个理解。

就是我们这里通过get方式传递的,这样的一个asset,这个函数它会把它传到这里来,传到这里来之后的话,这个av map这个函数它就会对啊,数组的每一个元素进行一个回调。

然的话我们这里呃像这个ai这个数组的话,传递了这样子的一个值对吧,然后的话他的第一个值的话,就是这个我们这里用post的方式传递的,这样的一个值,也就是我们在这里的一个ph pf,这一个字符串对吧。

然后的话这gary map的话它就会呃,调用这里的我们这里传递的这一个asset,这个函数来对我们这里没这里的一个error,这个数组里面的每一个元素来进行一个调用,就是说来进行一个执行,执行里面的啊。

应该是说处理处理里面的这个,数组里面的每一个元素,然后的话就构造成了这样子的一个asset,执行我们的一个pp four的一个命令,呃比如说我在你的,可以看到是能够正常执行的好,这里的话大家有哦。

有没有什么问题呢,你能理解吗,拿去在这,大家能理解,我刚呃这里的这一这一个函数的一个例子吗,好我把这个,我忘了,咳咳,我把呃我忘了,把这个代码把它放到这个服务器上面去了,那可能呃。

大家可以访问一下这一个,这个网址我是在x1 c下面的cod。

然后的话是呃,然后的话就是在后面的话,接我们这里所讲的这几个函数,比如说我以这一个map这个函数给你,你想要去进行一个操作啊,再然后的话在后面接一个p h p就能够访问到。

啊这一个例子大家能能懂吗,没有人回回答吗,能懂是吗,呃可能大家没有实际去操作的话,可能不是很理解,啊我这里的话,我这里的话是以这样子的一个形式来给大家做,就是介绍这样子的一个map。

这个函数能够导致命令执行,当然的话实际的情况不是说啊,有这样子的一个页面,有这样子已经构造好了,这样子一个页面,能够让你去呃进行一个这样子的一个,命令的一个执行。

但是的话我是以这样子的一个简短的一个代码,来给大家介绍这样子的一个函数,然后的话如果说呃我们再去做一个,就比如说做一个代码审计的时候对吧,我们在做一个代码审计的好的时候,我们想要去查找这个代码里面。

它是否包含有这种命令执行的一个漏洞对吧,我们就可以去查找相关的这种,能够导致命令执行的这样的一个函数,好的话,我们可以定位到这样子的一个函数的话,来去对它的一个代码逻辑做一个分析。

然后的话分析它是否能够啊去构造啊,通过构造这样子的,我们传递的这样的一个啊字符,来去达到一个命令执行的一个目的,实际上的话,实际上的这样子的一个命令执行漏洞的话,它其实不会说会体现在一个页面上的。

就是说他其实而且你实际去寻找这样子的,一些漏洞的话,呃,大部分应该也是通过代码审计,查找他的一个代码逻辑,还有的话就是说这种啊微型的呃,能够进行一个代码执行的这样子的一些函数,我这样说哦,能理解吗。

呃不理解的话呃其实也没关系啊,就大家呃先知道这样子的一个函数能够去呃,通过这样子的一个方式,来去进行一个命令的一个执行,好吧,大家先啊理解这一点,然后这一点的话应该比较好理解吧,啊没有什么问题的话。

那我们继续下一个,下面的话是一个creative function这样的一个函数,这个函数的话,它的一个意思就是从我们传递的一个参数,创建一个匿名的一个函数,好的话,返回其唯一的一个名称。

这里的话其实跟前面的话其实也类似,就是说我们以这一个例子为例,这样的话就是这个主要的话是这个create function,这样的这样的一个函数,然后的话我们在这里向他传这样子的一个啊,字符的话。

它就会呃把我们的一个代码,当作为一个菲律宾代码去进行一个执行,这跟前面的话也是类似的,然后这里的话就是呃要注意的一点,就是这里的一个参数的话,作为单引号分隔的一个字符串传递。

然后的话就使用这一个单引号的一个原因的话,是为了保护变量名不被解析,然后这里的话呃大家先了解一下,然后在后面的话会有一个例子做一个解释,就说在p h p里面的话是啊,就是双引号。

如果说我们传递的这样子的一个参数,它是以一个双引号做一个包裹的话,然后的话这个呃我们传阅的一个参数里面的话,它是,一个变量一个变量名的好的话,这一个变量的话,这个变量的矿。

它里面是一个能够执行的一个代码,比如说一个菲律宾four的一个代码,好的话,我们传递的这样子的一个变量的话,它是包括包裹在双引号里面的话,它就会首先会把里面啊,里面的这一个变量做一个解析。

然后因为这里的一个变量里面,它所呃携带的一个内容的话,它是一个菲律宾的一个代码,所以说他就会把里面的一个kgb代码,首先的话会做一个解析,然后的话能够导致命令执行,这样的话我在后面的话会有一个这样子的。

而另外一种形式的这样的一个pg的这个函数,呃这个的话这个的话我应该不用多说了吧,就是它的一个使用的话,我们只需要在这里而传递这样子的一个,cmd的一个值为我们的一个ph代码,就能够去进行一个解析。

然后的话呃,其实这里的话主要的话就是这些函数,而这里这些函数它的一个意思的话呃,大家去查查那个菲律宾的一个手册,就是说可能你去查那个手册的话,你啊了解得更清楚,然后这里的话呃啊因为上周是有位同学。

有位同学问我要要了这样的一个工具啊,就我现在这里使用的这个工具,然后我这样的话推荐一下吧,就是就方便大家的一个使用,这里的话这个工具的话就一个you tools,youtus的一个工具。

然后呃这里的话里面有一些插件,有很有很多的一些插件,然后你想要去查询pp相关的,比如说菲律宾函数对吧,他这里的话就有一个手册,比如说我要查询这样子的一个create function的一个行。

这个函数它的一个意思,我们就能够查看到它相关的一些信息,其实这里的话就是hp手册的一个,相关的一个信息,然后从这里的话,我们就能够嗯了解这样子的一个函数,大家可以去呃下载使用一下吧。

呃其实里面的话也有很多一些功能,就是大家可能在windows上面的话,或者说啊他这个工具的话嗯windows linux,还有呃mac 20都是能够去使用的,然后大家可能在windows上面的话。

它会使就使用这种三,去查找文件等等什么的对吧,然后这里的话它其实它也是,我也是经常使用到这样子的一个工具来查找啊,电脑里面的一个文件,然后它其实还有其他的一些手册什么的,我这样的话就不多说了。

还有像python啊等等的,就说你想要查询这一个库。

只有一个库,它的一个呃意思对吧,他怎么去使用的都是很方便的,就不用去网页去查,这句话,这个推荐嘛,因为上周的话是有位同学问了我这一个工具啊,我推荐给了他好,其实这样的一些函数的话,呃。

大家如果还不是很理解的话,可以去查一下那个手册,然后的话就是这个call you the function这个函数,这个函数的话,就是呃我们看一下它的一个圆形,这个圆形的话就是这里第一个参数。

这个call back这个参数的话,就是我们去调用的这样的一个回调函数,好,后面其余的一个参数的话,就是作为我们前面的这个call back,回调函数的一个参数,然后的话把第一个参数做呃。

就是把我们这里的第一个参数,作为一个回调函数的使用来去进行一个使用,这个的话其实跟我们前面的一个意思是类似的,对吧,我们前面的这里的一个map对吧,那同样的就是说呃类似的。

就是把我们这里传递的这样的一个啊,这里的一个呃,直把这一个词的话作为一个回调函数,然后的话能够去调用这样子的一个函数来去啊,处理我们这里数组里面的每一个元素,好的话,我们可以通过构造来去利用这一个函数。

来执行命令,啊这里的话我们以这个为例子对吧,就我们在这里的话,第一个首先我们第一个这一个参数的话,是能够去去被调用的,好的话,我们在这里后面的一个参数的话,是我们传递的一个参数。

然后这个参数的话就能够去调用这个函数,去进行一个处理,等于就是我们用这一个asset,这一个这个函数来去处理我们传递的一个参数,然后我们这里传递一个参数的话,如果没有做一个过滤的话。

是能够传递一个菲律宾代码的对吧,然后的话给这一个s的数据做一个解析,然后的话就能够造成一个命令执行,然后这里的话也是一个常见的,用这样子的一个函数来去构造一个一句话码的,我们要使用的话,其实就是呃。

用post的方式传递这样子的一个菲律宾代码,或者传递传递一个菲律宾代码就可以了,然后这个ai feat这样的一个函数,这个函数的话嗯,我们同样的以这一个例子来做一个解释吧,我们首先看一下。

同样的就是定义了这样子的两个变量对吧,然后第一个的话是通过post的方式接收cmd参数,传递来的一个呃字符是吧,然后第二个的话是一个error,一然的话它是一个呃把我们传递一个字符。

把它放到了一个数组里面,啊这里一个f u n c这个变量的话,它是通过get方式来进行一个呃获取字符,然后的话在交给这一个era fat,这样的一个函数,然后他就会把我们在这里传递的。

用post的方式传递的这一个数组,呃,哦说错了是啊,跟我们其实跟我们前面也是类似的,就是同样的是那个回调函数,那个av那个map对吧,当然的话他这里的话是啊,位置它是不一样的,就我们在这里。

我们通过get方式传递了这样的一个function,然后的话它是在这一个位置对吧,然后在这个位置的话呃,它是可以将在这里的一个字符,作为一个回调函数,好的话,在我们传递到我们数组里面的。

这样的一些元素的话,能够啊调用这样子的一个呃函数,来对这个数组里面的每一个值来进行一个处理,其实就是上面的这一句一句话,就用回调函数来过滤数组中的单元,然后依次将我们这里的数组里面的一个值。

来传递到我们的这样的一个函数里面,来进行一个处理,然后其实我们能够去构造的话,就是像这样子,我们通过啊get方式,像这个f u n c传递这样子的一个啊system对吧,呃system的一个函数。

这个函数是执行系统命令的,然后的话我们在再向我们的一个cmd参数,传递一个这样子的一个参数,然后传递的一个参数的话,它就会存到这个数组里面对吧,存到这个数组里面的话,这个error fat函数的话。

它就会呃,将这个数组里面的值都传到这样的一个啊,也就是我们这里的一个system函数,让它去进行一个处理,进行一个处理的话,就造成了一个命令执行,就说用system来执行我们的一个啊。

或mi的一个meaning,啊这样的话咳咳,我这个做一个演示啊,首先的话嗯,所以说我们需要传递一个呃f u n c,这里传递了一个f u n c的这样的一个参数的,值的话,就是用来作为一个回调函数。

然后的话我们传递一个system,来执行我们的一个系统命令,然后需要再传一个cmd,用post的方式,这里传递的一个用cmd啊,用post方式传递的这样的一个值的话,它是会存存储到一个数组里面。

我们这里的话是和传一个外卖对吧,然后传过去的话,传到数组里面的话,那个error这个error file函数的话,就会呃把它传到这个system函数,让他做一个处理,who am i,好,诶没写错啊。

有问题吗,呃呃然后这里的话可以看到我这里去访问的话。

可以看到这里有一个报错对吧。

然后这句话哦,我回到刚刚那个那位同学,就以这个例子来给你解释一下。

那个art那个就是忽略报错的一个意思。

可以可以看到在这里的话,它是有这样子的一个报错对吧。

啊这个不是啊,这个是没有传值。

那可以啊,没看到这些话是没有问题的,我这里服务器怎么不行呢。

可以啊,然后这里的话先。

先不管吧,然后课后的话我会把这个代码发给大家吧。

那这样的话我们先继续我们的一个课程内容。

我在这里本地的话是没有问题的,就说呃,通过这样子的一个方式来去利,用这样的一个函数来构造我们的一个命令执行,讲到这里的话,大家对前面的话有没有什么疑问,嗯其实这样的,其实这一些行本节课的话。

其实主要的话就是介绍这些函数,然后的话,我们如何利用这样的一些函数来去构造呃,构造我们的一个参数,通过利用它的一个函数的一个特性,来构造这样子的一个命令执行,就这样子的一个命令执行的话。

就相当于我们在目标服务器上面对吧,传啊上传了这样子的一个一句话嘛,那我们可以通过这样子的一个啊,存在这个论这一个函数,然后的话没有对我们传递的一个参数,做一个过滤的这样子的一个代码。

我们可以通过这样的一个呃,代码来进行一个命令的执行,就相当于是一个呃,我们上传的一个web share的一个木马,它能够达到同样的一个效果,好的话就是这个双引号啊,这个双眼的话就是我们前面有提到的。

就是说在这个双引号里面如果包含有变量的话,菲律宾的一个解释器,它会啊将将其替换为变量,解析解释后的一个结果,就是说比如说我们在这里,我们以这个为例子,我们这里的话是一个变量对吧,一个多了符多了符号。

然后这个变量的话,它里面包含有,放那个代码设置一个撇平four对吧,好的,我看pp解释器在碰到这样子的一个情况的时候,他会把这个变量里面的,这个p h p four的一个呃代码,把它给做一个解释。

执行执行之后的话,它的一个结果,就是会把它就是呃将这个变量会替换为,我们在这里执行之后的一个结果,然后这里的话会进行一个输出。

好可以了啊,我这样的话是给大家看一下代码,就像这样子的一个代表,然后我们以一个就是正常的这样子的,一个双引号的话,他是不会去呃执行里面的一个代码的,我们可以看一下对吧,他是直接进行一个输出。

但是我们的这样的一个代码,如果是放在这样子的一个变量里面,然后传进行一个传递的话,然后它是,而且是在被一个双引号进行一个包裹的话,它就会把我们这里传递的一个代码做。

当做一个菲律宾代码解析解析执行之后的话,这里的一个值,也就是他这里的一个pp代码解析之后的一个值。

然后的话l口进行一个输出。

那个效果的话就是,它那个效果的话就是这样子的。

这句话就是把我的一个pp four的一个呃值,进行了一个输出,然后同样的这这样子的一个双引号的话,也是能够导致这样子的一个命令执行的。

然后要注意的话,就是单引号它里面的一个变量的话,它是不会被处理的。

可以看同样的。

以这个为例,我们以一个单引号进行一个包裹好,我们执行执行之后的话,可以看到它是没有对我们这里的一个变量,里面的这个p h p for代码做一个解释的,它是直接原样的进行了一个输出,好这里的话,我。

啊我们本节课的一个内容的话就到这里吧,我们来捋一下我们本节课的一个内容,本节课的话,我们主要的话就是介绍了命令执行的一个漏洞,就是对它的一个简介,好的话,我们介绍了一个远程代码执行。

能够造成远程代码执行的一个一些函数,我们通过介绍这样的一些函数啊,就是让大家理解这样的一个函数啊,如何去进行一个构造,能够造成命令执行,然后这这呃,大家可能就是说你知道这样的一个函数对吧。

知道这样子的一个函数,能够造成命令执行有什么用呢,就是说呃就一般的一个命令执行,就说这种命令执行的一个漏洞的话,他不会说你直接能够通过页面,就能够去进行一个查找到的对吧,然后的话。

其实我们就说我们再去进行一个黑盒的时候,配合的一个测试的时候,其实我们很难去发现这样子的一个命令执行,除非的话是有很明显的那种呃,就是啊能够让你直接执行命令,执行执行系统命令的那种功能点。

然后的话你就可以直接去进行一个测试,它的是否包含有这样子的一个命令执行漏洞,对吧,好,我们实际的话其实是无法直接的去啊,查找到他的一个命令执行漏洞的,所以的话我们寻找命令执行漏洞的话。

一般都会一般都是通过白河的一个测试,就是说通过查看它的一个源代码对吧,那你查看源代码的话,你如何去查找命令执行的这种漏洞呢对吧,就是说我们可以通过查找命令执行啊,能够去造成命令执行的啊。

或者说代码执行的这样的一些函数,然后的话它函数的话通过观察它函数,他的这样的一些参数的一个传递的一个情况,对吧,来去呃寻找它的一个漏洞点,然后的话通过它的一个这样的一个函数的。

它的一个特性来构造我们传递的一个参数,来达到一个命令执行的一个目的,这就是我为什么要去解释这样的一个呃,这样的一些导致命令,导致代码之前的一些函数它的一个原因,然后我们本节课的主要的话就介绍了这样。

这样这一这一些函数,然后下节课的话,我们会呃给大家介绍一个远程的一个系统,命令执行,要不我我把这里在好,再花一点时间介绍完吧,就这一个,远程的一个系统命令执行,然而这种远程的一个系统命令执行。

它跟我们前面介绍的一个代码执行,它其实是有点不一样的,我们来了解一下,就是说它的一个不同之处,就我们这种系统命令执行的话,一般的出现这种漏洞的话,是啊我们的一个应用系统,它从设计上它就给提供给了用户。

这样子的一个能够去进行远程命令操作的,一个接口,就比如说我们常见的那种路由器对吧,还有防火墙,还有这种入侵检测这种设备的话,它你需要去啊它的一个管理界面上面的话,会有去呃调用系统命令去。

比如说去进行一个ping对吧,去查啊,通过ping的一个方式来啊,检测我们存活的一个主机,然后的话这里的一个pin的一个操作的话,它就会它就要实现这样的,这样子的一个功能的话。

就需要调用我们的一个啊系统的一个mini对吧,因为ping的话它其实是一个系统的一个命令,而我们想要调用这这样子的一个系统命令,来去执行我们的一些操作的话,就需要用到菲律宾函数里面的。

系统命令的一个执行函数,然后这些函数的话就有这种system y,还有ex e c,还有需要ex e c等等的,这样的一些我们常见的话,而且之前的话也经常使用到,使用到的话就是这个system对吧。

然后还有的话就是防疫号这个繁衍二的话,它实际上它的一个呃,就是它实际上的一个调用的一个命令,去进行一个执行的一个方式的话,就是使用的这个shell ex一函数的话呃,介绍一下。

然后这里的话是我们常见的这样的一些呃呃,能够调用系统命令执行的一些函数,这样的话我大概了解一下吧,后面的话会有相应的一些操作来理解,首先的话我来理解一下这个ex 1 c的一个函数。

这个函数的话就是执行一个外部程序,然后他执行的一个外部程序的话,就是呃执行我们这里一个command的参数,它所指定的一个命令,我们可以看到这里的一个command的参数的话是啊。

在这里就我们可以在这里啊,指定我们想要执行的一个命令,然后的话交给这个ex e c函数,来去进行一个执行,然后这里的第二个参数的话,就是我们的一个呃输出,然后这里的一个输出的话呃。

e x e c函数的话,它执行外部命令的时候是不会输出结果的,而是它会返回结果的最后一行,就说他执行完这这个命令之后,它的一个结果,然后它不会直接输出来,而是它会输出啊,你这里的一个命令执行之后。

结果的最后一行,如果说想要得到全部的一个结果的话,我们就需要使用到第二个参数,好,这一个参数的话就能够指定呃,它输出的一个数组,然后的话用啊,就是把我们前面这里执行的一个命令,它的一个结果。

把它给传到我们的指尖的这个数组里面,存储到这个数组里面,然后的话再进行一个输出,然后这个数组的话是一个记录的话,它就代表我们啊输出的一行,呃这话,我以一个例子来演示。

就这个。

啊这样的话我是稍微改了一下哦,这样的话我们来看一下这样的一个代码,这个代码就是通过post的方式来传递,这样子的一个呃字符对吧,然后传传给传到这里好了,这里之后我们再调用这个ex 1 c函数。

来去进行一个执行,执行之后的话,结果我们把它保存到这个return的一个数组里面,好的话,通过这个widp这个函数来输出,我们的这个数组里面的一个内容,输出这个变量里面的一个内容。

然后这样的话我加了一个art for对吧。

我们把这个art符号给去掉,去掉之后的话反问的话,你会发现会有一个报错,对吧啊,不是报错是一个警告,就是warring是一个警告。

就说这里的话这个e s函数它没有,就说它不能够执行一个空的命令,就是说这里一个空的命令的话,也就是我们这里的一个cmd的一个变量对吧,因为我们没有给这个变量传值,所以说所以说的话这个这里的话是没有值的。

然后的话这里的一个e x e c函数的话,它是不能够执行空命令的,所以的话它就会报这样的一个警告,好的话,我们在这里,在这里的一个只想要数截面加一个art的话,它就会他就会忽略这样子的一个警告。

然后这里的一个none的话,是因为我们没有像这里的一个数组里面传值。

所以的话你呃因为是为空嘛,所以的话你输出之后的话,它就是一个run,也就也就是一个空到这里,我们想要执行一个系统命令,我们只需要像这个cmd参数,传一个我们的一个命令。

比如说ios杠a我们执行执行之后的话,可以看到它是一个数组对吧,然后这个数组的话,可以看到啊,第一行第一行的话,它保保存的是这样子的一串值对吧。

这一串值的话其实就是我们啊,呃就是在系统上面执行我们的一个l s命令,然后s ska命令是一样的对吧,它输出的一个结果就是这这里的这一行对吧。

就是这里的这一行,然后第二行的话就是啊另外的一个值,然后我们可以看到的话就是呃,在这里的话有输出了当前目录,就在这个s s y s目录下面的一些文件,可以看到有一个system。p h p对吧。

还有这样子的一个文件啊,我们换一个命令执行,比如说户外卖外卖的话,你就是它返回的一个结构的话,是只有一行的对吧,我们执行之后的话,可以看到它是存储在数组的第一个,它的一个值的话就是这个这个值。

然后它的一个它是一个字符类型,它的一个长度的话就是14个14,啊这就是这个ex ec函数执行系统命令。

因为就从这里的话,我们能够发现,就是说我们前面的一个代码执行的话,一个菲律宾代码,然后他执行的话是呃,我们的通过这个p h p的一个函数对吧,好的话来呃调用,来调用我们的一个system。

这里的一个system函数的话,它其实就是我们啊后面讲的一个,调用系统命令的一个函数,然后的话通过呃这个system的一个函数,来去调用我们的一个系统命令,然后然后我们在这里的一个系统命令执行的话。

就是说他本来就给了我们这样子的一个功能点,然后他这个功能点的话就是呃提供了这样子的,就是调用我们的一个系统命令,来去进行一个操作,然后要调用这样的这样的一个系统命令的话,他就会去使用到这样的一些函数对。

然后使用到这样的函数的话,我们就能够利用这样的一个函数来去进行一个,执行,我们想要的一个命令,然后这一个system函数的话呃,我们前面也经常使用,主要的话就是呃区别一下呃,跟这个ex ec的一个区别。

就这一个区别就在于我们的这个system函数的话,它是在执行系统外部命令的时候。

它会直接将结果输出到浏览器。

这就是呃,然后的话我们前面为什么就经常会使用到,这样的一个system system码的一个函数,来去调用一个系统命令呢,就说我们去调用这样的一个system的一个,系统命令的话,它执行的一个命令。

它会直接输出到我们的一个浏览器,也就是会显示到我们的,也就是说会显示到我们的一个浏览器界面来,比如说,比如说我们在这里要传对吧,要传的话是传递一个菲律宾代码,然后去执行我们的一个菲律宾的一个呃代码。

也就是这里一串是吧,好我们想要去执行我们的一个系统命令的话,我们还是需要通过这样子的p h p里面的,一个调用调用系统命令的这样的一个函数,system这样的这样的一个函数要去进行一个调。

然后为什么要去使用这啊这样的一个c的函数,就是因为哦他执行的这样的一个结果,它是会直接输出到浏览器的,也就是会输出到这里,我们是能够直接查看到的,要注意有一个分号嗯,哦打错了外卖,可以看到执行之后的话。

它的一个结果是直接输出在浏览器里面的,然后的话就是这个pass three这个函数,其实呃跟这个ex一次函数的话,它其实也是类似的,类似的一个作用,也是用来执行我们的一个外部命令的。

然后这里的话主要就是区分一下啊,就是有一个区别,就说这一个pass through这个函数的话,他同样的就是呃会直接将它的一个结果,输出到我们的一个浏览器,然后的话他是能够去就是呃。

输出一个二进制的一个数据,就是说它可以输出我们的一个原石,原石的一个数据好,当我们去要去输出我们的一个二进制的,一个数据的时候,就需要去使用到这样子的一个函数啊,使用这样的一个e x e c。

还有system函数的话,它是啊无法去进行一个啊输出的,然后输出这种二进制数据的话,就体现在啊,比如说图像的一个数据,我们的一个图像的话,它其实就是由一些二进制的一个数据所组成的,如果说想要好。

通过命令来输出我们的一个图像数据的话,就需要去使用到这样子的一个函数,然后我,看一下它。

这个pass through,这个,啊,这里的话是直接把一个把我的一个命令,已经写到了这里,当然的话我们也可以通过通过get和post的方式,来传传递一个值。

把它给传给这一个啊变量区啊,传递给这个函数去进行一个解析,然后这里的话可以看到它,这里的话输出的话是啊我们的一个l s,也就是当前目录的一个信息,就跟那个x1 c是类似的,也是,好。

第四个的话就是这个shell,杠x1 c的这样的一个函数,这个函数的话是通过调用我们的一个shell环境,来去执行命令,虽然前面的话其实也是类似,然后它的一个输出的话。

就是以字符串的一个形式进行一个反馈,就是呃调系统命令的话,我们常用的我们常用,而且常见的也是这样的这几个函数,然后它的一个使用其实我们可以从代码来看到,就是它都是嗯类似的。

就是说直接使用这样子的一个呃系统,调用系统命令执行的一个函数,来去执行我们的一个系统命令,比如说执行ios啊,pr还有呃com i等等的这种命令,然后的话我们还需要了解的一个点。

就是呃这里的话就是在命令执行当中,常会去使用到的一些特殊字符,也是我们呃在下节课会有去提到的,这样子的一个内容,就是说利用这样子的一些呃特殊字符来去啊,像我们的一个就是说来去利用它的一个命令。

执行漏洞来啊,传递我们想要的,一个想要服务器去执行的一个命令,我们来了解一下,首先第一个的话就是这个竖斜杠这个树干,这个树干就说这个树干的话,就是呃我们可以看到就无论以看这张图吧。

比如说无论sam第一是否执行成功,cmd都将被执行,就说我们前面的这个命令,还有我们后面的一个命令,通过这样子的一个树干进行一个分隔的话,就是说不管前面这个p w m d这个命令,执行它是否成功了。

或者说他是否有这样子有这样子的一个命令,后面的这一个cm,第二也就是后面的一个命令的话,他都会被执行,可以看到我这句话输入前面输入一个a,没有这样的一个命令,它同样的会执行。

我们后面的这样的一个mi的一个命令对吧,然后的话就是一个啊分号,这个分号的话就是呃无人somebody啊,跟上面是一样的一样的一个意思,好的话就是两个竖斜杠,两个竖杠。

这两个竖杠的话跟上面的话是呃不一样的,两个竖杠的话就是在我们的一个项目,第一就是我们前面的一个命令执行失败的时候,它才会执行我们后面的一个命令,我们以这个例子为例,就说我这里的话一个p w d对吧。

p w d的话就是查看当前的一个目录路径,然后的话后面的话是一个贩卖对吧,可以看到的话,就是说我们如果前面的一个命令,它执行成功了的话,后面的一个命令它是不会执行的,然后的话如果我们前面的一个命令。

他执行失败的话,也就是没有这样子的一个命令的话,它就会执行我们的后面的一个命令,然后还有就是and两个n的,很多的话就是跟上面它是呃相反的,就是说只只有在我们的第一个面点,执行成功之后。

我们在这and后面接的这一个命令,它才会去进行一个执行,没看到,就说我们用n来去连接的话,如果前面的一个命令他执行失败了对吧,他执行失败的话,后面的一个命令他是不会去执行的,航海的话就是呃。

用这样子的一个呃单引号去进行一个包裹的。

就是用于执行特定的一个命令,比如说我们,呃其实,其实就跟我们。

跟跟我们直接这样执行的话,呃它的一个输出的话是类似的,但是他的他还是啊不同的,就是我们通过这样子的一个单引号,进行一个报告的话,执行我们的特定的这样子的一个命令。

然后还有的话就是这个呃大于号,还有小药,我们给来看一下小样,后面,一个逗号好不好,一个括号来包裹我们的一个面,来去进行一个执行,可以看到他虽然。

好可以看到我在这里的话,我一个大于号,后面接一个括号,然后的话我们在后面的话是可以呃。

执行我们就是输出我们这里的一个l s命令。

对吧,就查看当前的一个目录,然后这一个。

没有。

这里是不是搞错了吗,呃这样的话大家先记住吧,就是好,我们可以通过这样子的一个方式来执行,我们这里面的一个命令。

我忘了我上面这里写的是有点忘了,这里写的是我这句话,是我不知道是我搞反了还是怎么的,就说这里的话一个大于号后面,接面的话,就是呃,相当于是一个这样子的一个执行的一个结果。

就其实呃能够执行命令的话。

就是这个就是这个大于号后面,接我们的一个命令,然后这句话我这样的话,就是我们本节课的一个内容,然后后面的话我们下节课再继续吧,下面的话哦下一节课的话会讲呃,就是通过一个实验,通过那个实验。

不知道大家有没有去预习,通过这个实验来去介绍一下啊。

命令执行漏洞它的一个应用,然后我其实我我把代码都放,都放到这个服务器里面去了,就大家可以直接能够访问到。

呃我我到时候把代码都发给大家吧。

然后他的一个命名的话。

就是在服务器上面,那个命名的话跟我这里的话是一样的,然后的话大家可以在本地,或者说直接在服务器上面去进行一个操作,都是可以的,啊呃,然后关于,然后大家对本节课的一个内容有没有什么疑问。

大家有没有什么疑问的。

呃都没有什么疑问吗。

本节课的一个内容的话,其实呃比较简单吧啊其实这个命令执行的话呃,前面的话主要是介绍和相关的,导致命令执行的一些函数,它的一个就是作用,以及我们如何利用这样子的一个,这样子的一些函数来去进行一个构造。

我们的一个命令来执行,就其实大家理解命令执行的话,就相当于我们通过这样子的,就是说通过呃应用系统,通过我们的一个web服务,它本身的一个代码,它本身的一个代码就存在啊。

能够导致命令执行的这样子的一个条件,好的话,我们只需要去利用它的这样子的一个条件,来执行系统命令,等于就是说利用它应用系统的这种功能,还有它的一个代码的一个漏洞呃,把它作为我们的一个web shell。

来获得服务器的一个权限,大家这样子应该会比较好理解,然后没有什么问题的话,那么我们本节课的一个内容的话,就到这里结束了,其实这些的话呃不需要去记吧,就这些函数的话,大家知道就呃大家知道就行。

然后主要是要理解这样的一些,理解这些函数它的一个,它的一个作用,还有它的一个使用吧,这个函数的话,大家之后的话其实呃碰的多了的话就熟了,就你使用的多的话就熟了,其实也不用特意的去记,呃还有问题吗。

你用的时候再查也可以啊,就嗯就大家要明白。

就说我为什么要讲这样的一些函数,我前面其实也说了,就大家不要大家一定要就是。

要理解方法,而不是去呃史记吧,就说我讲这些函数的话,就是让大家然后我前面的一些例子的话,就是让大家能够明白,就是说我是如果说有这样子的一个函数对吧,然后的话我们怎我怎么去能够去让它执行。

我想要的一个命令,就是说怎样去进行一个构造,能够让它传,能够让他就是呃进行一个命令执行执行,我们向他传递的这样子的一些参数,好的话,命令执行它的漏洞,它的一个导致的一个原因就是因为呃没有对。

我们就是没有对呃,就是存在能够让用户操控的这样的一些参数,对吧,我们可以通过这样的一些参数,向这些函数来传递我们的一个呃命令,然后的话传递这一些命令的话,通过这些参数传递命令的话,服务端。

它并没有对传递的这些参数做一些过滤检测,就说没有过滤我们的,比如说像这种啊,system这样这样的一些可以执行系统命令,这样这样一些函数,然后的话就会导致这样子的一些呃,导致这样子的一个命令执行漏洞。

那我讲这些函数的话,就是让大家理解,这样子就理解这些函数如何去导致命令执行的,以及其实我这里的话是以呃,就是呃就是常见的这样的一些,通过这样子命令执行的,这样的一些函数所构造的这样子的一句话嘛,对吧。

其实可以看到这样子的一个简短的一个代码,其实你也可以把它当作为一个一一句话吧,然后的话我们只需要就是利用这样的一个函数,它的一个呃原理以及它的一个特性,来传递我们想要执行的一个命令就可以了。

哦哦可能大家没有操作的话,不是很理解,大家还是就是听我讲完之后的话去操作一下吧,然后有问题的话再问我吧,啊应该没有呃,没有什么其他的问题了,大家还有问题的话呃,再给大家一分钟时间啊,提问吧,有问题的话。

现在就提出来,都没有问题是吧,哦对了,就就是嗯今天有位同学,今天有位同学找我,就说他之前是因为有事,然后没有听课,然后的话就是我我看了,你现在也在听,就是你有什么问题的话,你有什么问题的话。

可以直接在群里问嘛对吧,然后就是他们已经听了课的同学的话,你可以跟跟他们去进行一个交流嘛,就是你们之间互相去进行一个交流的话,可能还更好一点,可能我这边去说的话,有些有些东西可能就是表达的时候。

可能不是会很让你们去理解是吧,因为我用的是我的一个思维,但是你们呃是你们自己就刚开始学这个的话,可能你们自己的一个理解的一个思维的话,会更好更好一点,更快一点好吧,就呃那位同学的话,嗯就有问题的话。

直接在群里问,当然的话你私聊也是可以的,啊没有问题的话,那么我们下课吧。

我们本节课的内容的话就到这里结束了,我们明天再见。

P23:第21天:命令执行漏洞-命令执行漏洞利用及防御 - 网络安全就业推荐 - BV1Zu411s79i

呃我们上节课的话是讲了,给大家介绍了一个命令执行,然后在我们呃我们这节课的话呃,上节课是讲了命令执行漏洞的一个简介,就是我们通过对命令执行就造成命令执行,还有代码执行的一些函数。

他的一个介绍以及它的一个基本的一个原理,来理解命令执行漏洞,它是什么样子的一个呃过程,那我们呃这节课的话主要是讲一下,命令执行漏洞的一些利用,然后的话还有就是呃命令执行漏洞的一个防护。

然后在上课之前的话呃,我们先大概的过一遍,我们上节课所讲的一个内容好吧,跟大家跟我一起来过一遍,加深一下印象,首先的话我们是有讲了命令执行漏洞,它产生的一个原因就是啊。

跟我们的一个circle注入以及xx s s这种哦,漏洞也是类似的,就说他没有对用户的一个输入,做严格的一个警察过滤,然后把用户的一个输入,当成了它的一个呃代码去进行一个执行。

然后的话就导致啊命令执行的一个漏洞,然后它的一个危害的话,跟我们的就之前讲web share是类似的,就说我们的一个命令执行漏洞的话,就相当于就是说我们可以利用web服务器对啊。

利用应用系统上面的这样子的一个漏洞来去啊,执行服务器的一些命令来得到服务器的一个shell,好的话就是呃我们有介绍呃命令执行的两种,第一种的话就是一个远程的一个代码执行,第二种的话就是一个呃远啊。

远程的一个命令执行,就它的一个区别的话,就在于我们的执行的这样的一些函数,它是它的一个作用是不一样的,就说我们的一个代码执行的话,它是一个代码逻辑,它存在这样子子的一个漏洞,然后的话它是它执行的呃。

就是能够去进行一个命令执行的一个效果的话,它是执行我们的一个菲律宾代码,然后的话,如果他是想要去执行我们的一个系统命令的话,就同样的需要调用我们的,而在菲律宾当中去调用系统命令,执行的这样的一些函数。

来去执行一个系统的命令,而我们的一个系统命令执行的话,就是说他啊应用系统,它本身就存在这样子的一些功能点,就说去调用系统的一个命令,然后的话它的这个功能点,它呃,就是说要嗯要设计这样子的一个功能点的话。

在菲律宾当中,它是需要去调用这样子的一些调用系统命令的,一些函数的,所以说的话如果没有对我们的一个用户做一个,对我们用户的一个输入,做一个严格的一个过滤的话,就很容易去导。

导致这样子的一个命令执行的一个漏洞,然后的话在远程代码之前的话,我们主要介绍了error函数哦,还有set函数啊等等的,这样的一些就是能够去进行一个,命令执行的一些函数,然后这些函数的话。

其实啊我们最常见的就是这种ever,还有asset对吧,就是说在这种函数我们再去进行一个构造,我们的一个一句话码的时候也会去使用到,因因为它就说我们的一个一句话码,也是需要去使用到这样子的一些函数。

来去执行我们的一个菲律宾代码,来进行一个命令的一个执行,然后呃这里的一些函数的话,而这里的一些函数对了,就说我今天的话有发了这样子的一个文档啊,昨天的话是忘记发给大家,就是在刻晴的时候好。

我这里有发了这样子的两个文档,在这里的话是我写的,就相当于一个笔记给大家去进行一个查看,就是啊,这就是这里的话有详细的,就是说明了这样的一些函数,它的一个作用以及它的一个使用好的话,我们怎么去啊。

如果说大家看不懂这样子的一些,菲律宾代码的话,就说不知道怎么去使用的话,我这里也有这样子的一个截图,大家可以去尝试一下啊,其实你尝试之后的话,你就能够基本的理解它的一个作用。

这个的话我有有让大家去进行一个预习,大家有没有去查看呢,看这里的话没没有多少人看啊,还有的话就是一个菲律宾的一个命令,执行的一个函数,好这里的话呃我们上节课也大概的有介绍啊。

就是ph命令执行的一个函数的话,主要的话就是这四个e x e c system,还有这个pass思路,还有这一个需要x1 c,这是呃比较常用的,能够啊,就是专门的去执行,我们的一个外部命令的一个函数。

呃然后具体的他的一个怎么去,我上节课的话是讲了前面的对吧,后面的话有两个是没有给大家做一个,基本的一个介绍,后面这两个的话大家其实在本地啊,或者是说,呃这里的一个昨天的话,忘记放到这个服务器上面去了。

大家可以在这个服务器上面去进行一个呃尝试,然后的话在本地的话大家也可以,就是我昨天的话也有发代码,然后在服务端的话,在这个服务器啊,在这个靶场上面,我是今天的话有把一些代码做了一个更改。

咳咳,啊我把代码的话是放在了这一个目录。

就大家嗯因为这个这里的话。

这些的话是不是很全啊。

没没有写全。

就是大家想看就是详细的,详细的一个的话,大家可以呃就用之前的一个shell对吧,大家大家在这个服务器上面的话,上面的一个shell都是没有删除的,大家可以用之前的一个shell。

然后的话呃用菜刀啊连上这个服务器,服务器好的话,在这个目录下面查看他的一个文件名啊,没有啊。

没有写,没有把它全部写到那个页面上去了,好的话,我这里的话。

我就是对昨天的一些代码的话做了一个修改,就是便于大家的一个理解,嗯比如说。

大哥。

诶。

我今天的话是把昨天的一个代码的话,做了一个修改,就是说呃之前的话是没有说有这种输入的,这种界面啊,我这样的话就随意的写了一个,简单的一个这种页面啊,比如说这一个函数,大家想要去进行一个操作对吧。

这个every feat我们嗯,诶对照一下它的一个使用是这个对吧。

然后他的一个源代码的话是像这样子哦,大家可以在需要上面直接去连接。

去查看它的一个源代码。

然后它的一个使用的话就是呃。

我这样的话,前面呃就是这个函数。

我先看一下,看一下代码。

这个的话就是呃我这个页面的一个源代码,其实呃主要他的一个代码的话就是。

这里的话就是一个写了一个div,就是前端的一个代码,就是这里的显示的这样的一个界面。

然后的话主要的话就是这里,这里的话就是呃,我们通过post的方式来去提交。

我们的这样子的两个参数对吧,就然后我们可以在这里输入我们的呃一个,比如说出了一个字符,我这里的话想要去执行我们的一个命令,然后就利用这样子的一个函数去进行一个执行,然后可以看到的话。

我这里的话传递的是一个system,然后我们这里传递的一个post的方式。

传到传递到服务端的话,它就会传到这里来啊,传到这里来对吧,传到这里来之后的话,呃会呃放到这里,传到这里就是呃在利用这一个函数去进行一个,就调用这里我们传递的这样的一个,f u n c的这个函数。

来去处理,我们这一个数组里面所传递的一个参数。

然后我们这里的话就是要传递我们的一个呃,想要让我们上面所传递的这一个函数,去处理的一个参数,比如说我们这里想要去啊,用这个system去执行我们的一个系统命令对吧,执行我们的一个外卖。

你看到他这样的话是一个返回的是一个阿帕奇,就当前的一个呃权限的话,就是一个阿帕奇的一个用户权限。

这样的话还有其他的一些命令,我这样的话就不一一演示了。

呃然后的话还有其他的一些函数,上节课的话有讲过了,我就这里的话我就不不再啰嗦了。

然后呃在这个服务器上面的,有,这么多的一些啊,就是代码,每一个代码的话它都有一个页面,大家可以去尝试一下,然后这个的话是留做一个课后作业哦,还有就是一个。

s y s s y s的话就是我们的一个系统命令,执行系统命令的这样的一些函数。

然后的话我们还有就是呃,上节课的话我介绍了一些就是在命令执行当中,常用的一些特殊字符,但是的话只是通过这样子的一个例子,来给大家做了一个而表示,然后没有可能没有实际的去进行一个嗯演示。

就说通过实例去进行一个演示,我们如何去使用这样子的一些特殊字符,来执行我们想要的一个命令,然后这里的话呃。

我们就以一些啊例子来演示,我们的这样子的一个命令执行,如何去呃,使用我们的这样的一些特殊字符,来构造我们的一个payload,来进行一个命令的一个执行。

而这里的话呃,大家访问一下这几个网址,发群里了,这样子的几个丸子呃,我这样的话总共的话是有四个页面,然后在大家访问的时候,就在后面改一下就可以了,比如说二他都是这样子的一个页面。

然后这里的一个这里的一个页面的话,功能的话比较简单,就我们可以看到他这样的话是请了,那你说那你输入测试目标的一个ip地址对吧,他这里提示我们输入一个ip地址,我们来呃。

出了一个随意随意的输入一个ip地址,来去进行一个尝试,我这样的话输入一个呃,本地的一个回环地址来去执行一下,发送一下,然后可以看到它这里画是执行的是一个p命令,对啊就是啊就是前面我们有说到的。

我们从这里的话,它的一个返回的一个结果来看的话,可以啊,知道它是调用了我们的一个系统的一个ping命令,然后我们在这里输入的话,就是输入我们的这样子的一个ip,就这里的话相当于就是一个检测你指定主机的。

一个就是呃存活,就是能否去访问到,你这里测试的一个目标ip地址,它就提供了这样子的一个功能,然后的话这里的,这里的这个功能点,我们知道它是调用了一些系统命令对吧,然后的话我们这里的一个输入的话。

是我们可以去进行一个控制的,然后在这里的话,我们可以去进行一个命令执行的一个呃测试,看它是否存在这样子的一个漏洞是吧,然后这里的话我们就需要去呃,使用到我们这里有介绍的,这样子的一些特殊字符。

比如说第一个第一个的话就是一个树干,树干的话,而我们也可以叫它广道服,就是说它可以去迎接我们的前后两个命令呃,管道服,它的一个意思就是说我们前面的一个执行,把我们前面的这个命令的一个执行结果。

作为我们后面的一个命令的一个参数,然后我这里的话,同样的就是输入这样子的一个i p对吧,然后我们在后面再,我们想要执行其他的一些命令,尝试一下,我们输一个树干对吧,我们如果前面我们知道前面的话。

它是可以执行成功的对吧,执行成功,然后我们后面再接一个命令,比如说我这里的话啊,这一个换mi这样子的一个命令,然后去进行一个尝试,尝试的话,我们看他返回的一个结果是什么样的,然后可以看到这里的话。

它只返回了一个阿帕奇,那这个阿帕奇的话我们可以知道他是啊,它的它就是我们刚刚执行的一个mi命令,所返回的一个结果对吧,然后呃为什么它是只返回了这样子的一个呃,或m i的一个命令呢。

就是这里的一个就说我们的这个树干的话,他无论前面它是否执行成功,后面的这一个命令都会被执行,就是说我们前面他不管是否执行成功了,是否有执行,它都会执行我们后面的一个命令,然后我们这里其实也可以尝试。

比如说我们一个test,然后后面接我们的一个,外卖,来尝试看是否能够去执行命令,然后可以看到的话,我这里,我们啊回车可以看到他这里的话是返回了,我们想要的一个结果。

也就是一个户外mi的执行命令之后的一个结果,然后大家可能看到这里的话可能会有疑问,为什么能够去执行我们啊,为什么我们家这样子的一个呃树干的一个符号。

就能够执行命令呢。

啊这里的话哦,我们通过我们的一个云代码来对它做一个分析,呃那个页面的一个源代码的话,就是像这样子跟前面的一个页面的话是类似的,呃,主要的主要的一个核心代码,就是在这里就在这一串。

然后在这一块呢我们先来捋一下啊,它的一个代码的一个逻辑,首先的话我们可以在这里我们先从下面开始吧,这里的话就是一个div,就是我们的这样子的一个页面对吧,刚刚那个输入框的一个页面。

我们写的一个htm的一个代码,然后的话他这里的话是呃有一个输入框对吧,然后这个输入框的话,就是我们要向我们的一个服务端传递的,那个呃字符,或者说要向服务端去传递的一个命令,也就是我们啊用户或者说攻击者。

能够去可以控制的一个输入,然后的话呃这里的一个输入的话,它就会好传到这里,这里的一个代码,这里的一个代码的话就是呃检测你的excel的话,而这里的一个绿色的话就是判断啊,你的这里的一个变量它是否好。

是否含有这样子的一个和数据,好在这里的一个意思的话,就是呃你是否有接收到啊,这个summit这个参数参数,然后这里的一个值的话,就是从这里来传传过来的,就其实我们再去进行一个呃,上传文件的时候对吧。

我们要点击这样子的一个按钮,点击这样子的一个呃按钮的一个事件,点击之后的话,它就会呃,有,就在前端的话会传递这样子的一个name的一个值,对吧,然后的话啊k h p代码的话。

它是从你传递的这里的这一根啊,内部的一个值来获取你传递的一个参数。

而这句话他是判断你是否有提交,就如果说你没有提交哦。

你没有点那个按钮的话,它是啊就没有触发这个事件的话,他是不会去啊传递到服务端的,然后第二个参数的话就是判断我们这里的啊,你这里的一个post的方式所传递的这一个啊,用户输入的一个数据。

然后通过post的方式来接收,接受这里的接收之后的话,做一个判断,你的这里的一个参数它是否有传递。

就说你直接这样子去进行一个提交的话。

它是不会啊,在服务端不会继续走下去。

走到下面的一个代码,如果判断你的这两个,这两个值都有了,他就会继续下面的一个代码的一个执行,然后然后的话就执行到这里,这里的话就是把我们的前面的所用户输入的,一个呃字符,把它给给到这个ip的这个变量。

给到这个变量的话,呃,这里的话这里的一个代码的话就是判断哦,你当前的一个服务端,它是什么,它是什么样子的一个系统啊,主要的就是这个kp your name这个函数。

这个函数的话是返回运行p h p系统的相关的,一个信息,就是说返回你啊运行这个p h p代码,它的一个服务器,它的一个系统的一些信息。

然后这些信息里面的话就包含有,包含有你当前的一个系统的一个类型,然后这里的一个代码的话,就是从你返回了这里的一个信息当中来去啊,匹配你是否有这样这样的一个windows的一个信息。

如果说呃有你返回了这些一个系统信息,里面有这个windows的话,就说明你的一个系统是一个windows的一个系统对吧,然后的话它就会执行下面的这样子的一个命令,这个执行命令的话。

它是使用的这个shell杠ex e c的这个函数,前面的话有讲到对吧,但是能够去调用我们的一个系统命令去执行啊,去执行的,然后这里它执行的一个命令就是一个ping命令,然后他的一个问题就是出在这里。

就是说我们用户输入的这样子的一个呃数据啊,把它传到了这个变量之后,传到这里的话,好判断了它的一个系统之后,他直接就把它拼接到了这里的一个,需要干1x一这个命令执行函数里面,然后的话他没有对我们的这。

这里的传入的一个数据做任何的一些处理,就是说没有对它的一个合法性,做一个判断以及过滤,然后的话攻击者的话就能够利用我们前面有啊。

我们。

前面提到的这样子的一些特殊的一个字符,来去啊啊拼接我们的一个命令,然后在这里的话,其实它的一个命令就是在服务端,它是这样子的一个显示,他其实在服务端去进行一个处理的话,就是他首先啊用这个需要按e 11。

调用这个ping命令对吧,然后ping的话ping命令的话,因为是在windows呃。

我这里的话,在windows上面,在windows上面去进行一个p。

然后ping的话啊,因为用户因为服务端它没有对我啊,用户的一个输入做任何的过滤,然后我们如果说是一个正常的一个输入对吧。

我们在这里输入一个正常的一个ip地址。

然后他就会把我们的这个ip地址,把它给拼接到这里,就是等于是就是在我们本地去执行,我们这样子的一个ping本地的一个ip,然后的话它的一个返回的一个结果。

就是这样子对吧,然后的话也返回到。

它会返回到我们的一个浏览器,就是像这样子。

好的话,我们因为他没有对我们的一个用户的一个输入,做一个过滤,我们可以使用这样子的一个管道服,我们在后面接一个管道符,然后的话在街上我们想要啊,额外执行的一个命令,比如说外卖查看当前的一个用户。

我们来执行一下,然后可以看到在这里的话执行之后,它返回的一个结果就是呃,一个mi执行之后的一个结果对吧,因为我们的这个管道符,它就是说它不管前面的一个命令,它是否执行成功或者失败。

它后面的一个命令它都会执行,然后他前面pin pin接,ping这一个本地的一个i p地址对吧,他执行了执行成功了,但是执行成功之后的话,我们后面的用这一个管道符连接的这一个命令。

后面的这个命令它同样的会去进行一个执行,执行之后的话,它返回了一个结果,就是这里的一个命令的一个执行结果。

所以说的话,我们就能够通过这样子的特殊的字符。

来进行一个拼接来执行,我们想要和服务端额外执行一个命令,比如说if can be对吧,查看。

查看他的ip信息对吧。

然后这里的话是在windows上面,然后如果说呃他返回的这样子的一个信息,他不是有windows的话,那么就说明的话他是这种unit x,或者是说linux系统对吧,然后的话linux系统上面的话。

跟windows上面的一个区别的话,就是在于命令它的一个不同啊。

就是你在linux里面,大家如果玩linux的话,就是你在linux里面去骗一个ip对吧,去骗一个ip的话,如果你不指定他发他发送pin数据的一pin的,就是他去pin的一个次数的话。

他就会一直拼下去对吧,他不会他不会停,他会一直骗下去,所以说的话这里他其实就是一个命令的一个不,同的话,就是我们通过杠c这样的一个参数,来指定他拼的一个次数。

然后的话在windows上面的话,默认的话就是它会进行一个,就是进行他会拼四次。

然后的话拼完四次之后,它就会啊结束,然后这样的话在历史上面的话,我们需要用这杠c的这样的一个参数。

来指定他pin的一个次数,因为如果你不指定的话,他就呃在服务端对吧,在服务端它会一直骗一直ping的话。

它的等于你的这个ping的一个呃程序,它是没有执行完毕的,如果你没有执行完毕的话,在这里服务在这里的一个浏览器的话,它就会一直在等待,就一直会在转,就是一直转,然后直到服务端它处理完。

这处理完这个程序之后的话。

他才会返回一个结果,显示在我们的一个浏览器上面,然后这里的话就是呃。

这一个例子它的一个嗯演示以及讲解啊,不知道大家有没有听懂呢,就大家对这一个有没有什么疑问。

大家有没有什么疑问呢,哦哦大家可以去进行一个尝试,i,链接的话就是这里学,需要的话,因为你这里的话,你能够通过这样子的一个啊管道符对吧,来去拼接我们的一个命令对吧,如果你你既然能够执行命令了对吧。

比如说我可以用echo来啊,就执行这样子的一个echo命令对吧,来像我们的这样子的,比如说写入一个一点tt这样子的一个文件。

那我们来执行一下,执行之后的话,我们可以来诶。

max mic。

我们可以用来测试一下,用echo执行就是一个写入的一个命令。

我们写入到一个一点text来就进行一个尝试,然后执行之后的话,我们可以来看一下哦,应该是有了的。

可以看到我们在这里的话啊,已经写入了这样子的一个文件对吧。

我们可以查看一下里面的内容,就是123是吧,我这里先可以测试一下呃,然后的话我们可以来访问一下,你们一点text这样的一个文件对吧,就是123的一个内容,然后我们我们就可以通过echo。

来去写我们的一个一句话嘛对吧,写我们的一句话码,把我们的一句话码命令呃,把它写到服务端,就能够直接去进行一个连接,然后的话呃还有就是呃,其实我后面的话也会有介绍的,就是通过啊通过这样子的一个命令执行。

来反弹一个shell,就说直接反弹shell,因为它能够它能够直接执行,我们的一个系统命令对吧,那么我们可以利用它来直用,就是说啊在link上面或者说windows上面。

把它需要的一些方式来直接反弹一个shell给我们,就不需要去进行一个闯码什么的,好的话,当然的话也可以去用命令执行来写shell对吧,我们可以直接用echo这样子的一个语句,写我们的一个一句话嘛对吧。

然后的话呃还有的话就是我们之前有讲到的,用这样子的,就是呃如果想你想要用大嘛对吧,想要上传一个大码的话,你就是啊可以用这样子的一个f puts,来写我们的一个小码,然后通过小码来上传我们的一个代码。

这样的话我前面的话有讲到了,呃,这里的话我等会再细讲吧,好我们先呃说前面的吧,这里的话啊你明白了吗,就理解了没有,就说你都能够去执行命令了对吧,你能够通过这样子的一个方式执行命令。

那么等于就是说你直接是在这样子的一个呃。

等于是直接在这样子的一个需要环境下面,去执行命令了,对,因为你单,因为你默认的一般的就是一个呃。

阿帕奇的一个权限对吧,然后的话你的这样的一个目录,你要想你要能够去写文件的话,因为我这里的话是直接用root用户,然后的话呃这里的这样的一个文件,文件权限的话是啊note组的,所以的话你阿帕奇的话呃。

然后的话呃之前的话是一个rx,他没有写的一个权限,没有一个写的权限的话,你是无法向这个目录下面去写文件的,可以的话,我这里的话是图方便。

就改了一个777的一个权限,好大啊,就是说一般的就是说你的一个web服务器的话,它会有存在这样子的一些目的,就是说你的一个阿帕奇用户,比如说你写这种日志,你啊或者说还有其他的一些一个要求。

或者说上传文件的这些目录的话,他呃阿帕奇的一个用户都是能够去进行一个呃,写文件的,出牌的话有额额外的一些性质,好理解了是吧啊,对有啊,有问题的扣一,没问题的扣二,啊还有问题吗,没问题的。

好的,没问题的话,那么我们继续,啊,前面的话我只是啊测试了这样子的一个管道服,对吧,然后的话我们还有其他的这样子的一些字符,它同样的能够去达到我们的这样子的一个目的,然后我们可以看一下这里呃。

我这里的话有贴了一个线程的一个代码。

呃大家可以去访问这个地址啊。

能够直接访问到。

然后就是这里的诶这里的四个,这里的四个题目大家可以去尝试做一下,然后这里的话啊,我刚刚的话是只讲讲到了用这个管道符对吧。

然后的话还有其他的一些符号,特殊的一个字符,能够去进行一个命令的一个拼接好,我们依次来做一个演示,首先第一个的话就是这个and符号,啊不是这个搞错了,是,这个,好的话就是这个n n的方呃。

这个这个是叫n的吗,还是叫那个叫啥,反正就是这样子的一个符号,这个符号的话,我们同样的可以跟前面的一个啊类似,能够去进行一个命令的一个拼接,又在后面拼接我们的一个命令来进行一个执行。

pso可以看到他这里的话,输出了一个pin的一个命令的一个结果,以及我们,它连接符后面的一个命令的执行结果哦。

还有其他的这样子的一些字符,这样的话我就不一一的一个尝试了,还有一个呃,大家可以也可以直接在我们的一个,就其实嗯可以直接在一个linux。

系统里面去进行一个尝试,就其实就是啊我这里这里这一张图片,其实就是啊列举了这样子的一些特殊字符,它的一个效果,好的话,我们继续,这样的话是第一个例子,第二个的话就是,我们同样的呃。

我这样的话我就不做一个测试了,我只对啊,我直接通过代码来去进行一个讲解啊,前面的话这里的一个代码的话呃,大家应该理解了吧,就就是他没有对我们的一个啊传入的一个,数据做一个处理。

然后直接的话带入到了这样子的一个啊,执行系统命令这样的一个函数去进行一个执行,好的话,执行系统命令的话,我们就可以通过这样子的一些特殊字符对吧,来去连接啊,我们的一个命令执行,我们想要的。

想要服务端执行的一个额外的一个命令,然后这里的话我们看一下这个代码,这里的一个代码跟前面的一个不同之处的话,就在于,就是我这里的话设置了这样子的一个黑名单,就这一个black list。

这里的一个黑名单的话,其实跟我们前面的一个文件上传的话,也是类似的,就是这里的话我们可以看到,这里的话是有一个数组,这个数组的话里面啊存储了这样这样子的啊,这个数组它里面定义的话。

就是把我们的这里的一个啊,and then的符号把它给替换为空,然后这里实际的一个替换的话,替换的一个操作的话,就是这这里的一个string path,我们的一个呃,替换我们的指定字符串的。

嗯呃诶这个应该讲了吧,就是字符串的一个替换的一个函数,就是说这个函数的话,他会呃把我们指定的这样子的这个subject,比如说不管它是字符串或者是说数组,他都会把我们就这里给定的这一个啊。

我们看这个圆形吧,就是这里的给定的这个字符串或者数,数组里面所有的这种元素,它都会被啊这里的一个rpace,就是说我们这里指定的这里的一个啊,替换的一个字符都会被它进行一个t服啊,不是被它进行一个替换。

然后替换的话这个strategy配置,它需要定义这样子的一个就是一个啊规则,就说你要匹配什么样的一些字符,然后的话去进行一个替换,在这里的话体现在代码上面的话,就是我们啊从我们的一个黑名单当中。

就从我们黑名单中取出我们的这样子的一个key,就是我们这里的一个and,还有这里的一个分号对吧,取出我们的这里的这两个字符,然后的话啊,再去进行一个呃,进行一个替换,我们这里输入的一个啊数据。

或者说字符串里面,是否有包含有这样子的一个啊黑名单当中,定义的这种字符,如果说包含有这种n的,还有封号这种字符的话,它就会啊把它进行一个替换为空的一个操作,这样的话就是啊这里的一个意思就是啊。

概括来说的话,就是移除所有包含在我们这里,黑名单当中的一个字符,就是把我们这里的一个字符替换为空,然后后面的话就是跟前面的一个代码的话,是一样的一个意思,这里的话主要的话就是在这里的定义了。

这样的一个黑名单对吧好,然后前面的话我们有说到,就是我们可以用这样子的一个嗯,它还有分号来去做,我们作为我们的一个命令的一个连接符对吧,然后执行我们的一个命令,然后的话这里定义了一个黑名单的话。

就过过滤了我们这样子的两个字符,但是的话我们其实从前面的一个文件上传,他们的一个黑名单那些规则当中也能够了解到,就是说黑名单它的一个啊这种策略的话,它是有很大的一个缺陷的,因为你黑名单的话。

你不可能把所有的这种特殊的一些字符,都能够把它给列进去,然后的话进行一个过滤对吧,这就是它的一个局限性,所以说的话我们就而能够寻找,或者说通过其他的这样的一些特殊字符。

来去进行一个绕过他的一个黑名单的一个过滤,然后的话我们就可以构造以下这样子的,一些payload,我们首先的话来看一下第一个,第一个的话就是通过这一个and封号,and这样子的一个字符对啊。

为什么这样子的话能够去进行一个logo呢,我们从代码里面代码的一个流程来看一下对吧,我们把我们这样子的一个数据,把它给传到服务端对吧,用post的方式获取到之后,给到这里的这里的一个ip的一个变量。

好的话,然后这个ip的话,他会给这一个string path这个函数做一个替换替换,里面的一个and fire有分号对吧,然后的话在这里的呃一个字符的话,它会把我们的这里的一个分号给匹配到。

然后的话进行一个替换,替换之后的话就是这样子的一个形式,关麦,然后的话它替换之后的话,就是把我们这里的一个分号给替换为空对吧,替换为空之后的话就是这样子的一个字符。

这样子的一个字符串,然后这个字符串的话他会继续往下面走,然后继续走到下面的话,它就会执行。

它会把它带入到这里的一个执行系统命令对吧,就是p,就是ping,然后的话接我们的一个这样呢,这样的一个字符是吧,然后其实从这里的话我们就可以看到,我们这里执行之后的话,同样的是能够得到我们的一个结果的。

因为他这里的话,我们虽然把我看到这里的一个分号给替换掉了,然后我们通过它就这一个黑名单,替换这个分号的一个规则,我们构造这样子的一个啊形式,它把它替换掉之后的话。

我们就能够,我们同样的能够组成这样子的一个,n的一个形式,同样的能够去执行我们的一个系统的一个命令,然后这句话。

看到这里的话就是他的执行的一个结果,前面是ping,后面的话是执行我们的外卖,然后自然的话我们就可以延伸的,啊不好意思啊,就可以延申去构造其他的这样子的一些pload,对吧。

还有还有的话他的一个黑名单是没有替换全的,就说没有规则,它是不全的,我们还有其他的一些字符,前面我们也说了这种管道服,还有两个树干的这种,还有的话呃一个人的符号也是可以的,然后的话还有就是通过这种呃。

它它的一个替换规则对吧,我们把这里的一个替换轴的话,能够构造成其他的,能够能够构造成其他的,同样能够去呃达到啊,命令执行的一个连接符的一个啊符号,就构造这样子的一个符号,哦还有其他的一些。

比如说它替换很能的嘛对吧,你可以把你能的放在中间,然后他把他一替换掉之后的话,就组合成了这样子的一个啊两个树干,然后的话带到这里执行系统命的话,它同样都能够执行我们的一个外卖的一个命令,这就是这个例子。

然后粒子三的话我们同样的看一下代码,从代码的话,我们其实也可以观察到,如果说你不看代码的话,你去进行一个测试的话,它你可能会发现我们前面啊,我们前面能去使用到的一些特殊的一些字符。

它都不能够进行一个使用了对吧,好的话,他把呃他这里的话跟前面的一个不同,就是他的一个黑名单的话,是就是它的一个规则的话变多了对吧,替换了这种我们的啊两个竖杠的,还有呃封号and符号对吧。

而其他的一些符号啊,他都给他做了一个过滤,然后这里的话就是他同样的,是一个黑名单的一个策略,然后这里的话就是要注意的一个地方的话,就是他这里过滤的话啊,我们进行一个logo的话。

就是这里它过滤的是一个树干,后面加一个空格对吧,但是的话它没有过滤我们的这样子的一个树干,所以说的话我们可以通过这样子的一个,特殊的一个字符来去进行一个logo啊,配料的话就是像这样子。

这个的话就是呃比较严格的一个,黑名单的一个机制,它把我们能够去进行一个命令拼接的一些字符,都给它进行了一个过滤,当然的话黑名单那个局限性就体现在这里,它无法过滤,完全啊过滤所有的这样子的一些呃字符。

这就是它的一个呃缺陷,也就是我们能够去进行一个利用的一些点,然后第四个的话这个例子的话呃,我这样的话就是特意把它给拿出来,就是说这里的话这个例子就是一个呃比较正常,就说没有漏洞的这样子的一个例子。

然后他为什么会没有漏洞的漏洞呢,我们从代码来给大家做一个分析。

呃这样的话可能看的话比较小。

我这样的话,编辑器里面进行一个查看,我们同样的,就代码的话我都有做一个注释啊,就大家在服务器上面查看这些代码的话,应该其实也是没有问题的啊,有做一个注释,就是其实这里的话主要的话,就是给大家过一下流程。

就是说好以这一个例子,我们如何通过,就是比较好的一个代码的一个啊,书写了一个方式来去呃,防御这样子的一个命令执行的一个漏洞,当然的话是只限于这样的一个例子,那我们可以从头的话来过一下啊。

前面的话就是同样的,就是接受我们的一个传递的一个数据对吧,那么post的方式给到这样子的一个i p变量。

然后的话传到了这里的一个strip resix,这样的一个函数,这个函数的话啊,调用这样子的一个函数,对我们所传入的一个i p啊,这里的一个字符做一个处理好的话,这里的一个strip呃,这个函数的话。

它的一个意思就是呃凡引用一个引用字符,然后的话返回一个去除,就是转移反斜线后的一个字符串,要转移转移,大家能够理解吗,就说这里的一个反斜杠,就是我们的一个转移的一个字符。

然后的话如果碰到这样子的一个字符的话,他就会把它给替换啊,就是反转反引用,把它给啊,反引用为这样子的一个原来的一个字符,就说你原来是所传递的是这样子的,一个有带有一个转移符号的一个字符。

它会把它给转化成啊,它有个转转一符给去除的。

这样的一个原始的一个字符,这就是它的一个函数的一个意思,然后的话他做了这样子的一个转移的一个处理,之后的话,它会带到这样子的一个函数,这个explode,这个exp函数的话,就是以我们这里的一个字符。

在这里的话,就是以点这一个字符。

来对我们的一个数据做一个分割哦,分割的话它是以点为一个分割,因为我们知道我们的一个ip的话,是一个顶分十进制对吧,点分十进制的一个形式,比如说这样子的127000001对吧。

他是你点做一个分隔的,然后的话他在这里的话,他把我们的一个i p,以我们的一个点字符做一个分隔,把它分割成了四个字节对吧,就是四个部分,然后的话再把它带,把我们的每一个部分都做了一个警察。

这个函数的话就是警察你的这里的一个啊,呃这里的一个数据它是否是一个整数,就是判断它是否是一个整数的一个类型,因为我们的一个i p它是顶分十进制对吧,我们所传递的这样子的一个啊。

就是说正常的一个ip它分开之后的话,它都是以一个整数的一个形式存在的对吧,好,这样的话他就把我们的分开之后,就说一点分隔之后的这样子的四个部分,都做了一个判断,判断你的这这些数据它是否是一个整数。

就是判判断它是否是一个ip对吧,然后判断完完毕之后的话,如果是都是整数的话,就说明能它是一个ip地址对吧,然后的话再对他做一个呃,就是一个拼接,拼接成一个ip,然后拼接成ip的话,下面的话就是啊。

执行我们就调用我们的一个系统命令,去进行一个执行对吧,然而为什么通过这样子的一个代码的。

一个过滤操作的话。

就能够去啊,就防御我们的这样子的一个命令执行漏洞呢,在这里的话我们啊以这一个payload为例啊,就以这一个吧。

对吧,就这一个我们像我们的,在这里传递我们的a。

输入我们的这样子的一个直线命令的一个语句,对吧。

然后他输入之后的话,它就会给到我们的这里的一个代码,给到之后的话,它会呃首先对我们那些转移字符做一个处理,对吧,我这里的话是没有的,然后处理之后的话,它就会把我们的一个ip分成四个字节。

然后他分的话会是这样分你一个点,就是嗯,以我们的一个点的这个字符来进行一个分隔,分隔成四个部分对吧,就是这四个部分,12344个部分,然后的话在对我们的这四个部分,四个字节做一个整数。

是否是一个整数的一个判断对吧,然后他在判断的时候的话,发现前面三个都是正常的对吧,它是一个整数,但是我们后面我们的一个拼接了,我们的一个2e的一个字符啊,就是二页的一些命令对吧。

所以说他在进行最后的一个字节的,一个判断的时候,可以看到它明显的是包含有这种字符的。

就说它不是一个整数类型,所以说的话他在这里去进行一个判断的时候,他就不会啊,就是,就在这里判断的时候,它就会啊,能够判断出我们这里传递的这样的一个啊字符。

它不是一个ip地址。

然后的话他就不会去带入到下面的一个啊命令,执行的一个步骤。

好的话,我们前面的其他的就其实这里的一个例子的话。

就是几乎啊比较呃合理的,比较完美的,就是把我们的这里的一个命令执行的一个漏洞,进行了一个防御。

这样的话大家能理解吗,就说这一些这里的一个代码,啊有问题的扣一,没问题的扣二。

这里的话不是一个白名单,他是通过代码对吧,我们首先的话,因为,诶我们首先的话我们先看一下,这里的这样的一个页面对吧,这里的一个页面,我们假设它就是一个呃,就是呃就是通过这样子的一个功能点。

来去检测指定的一个ip它是否存活,去去调用一个片面对吧,这样子的一个功能点,然后这里的一个功能点的话,我们在这里的话,正常的一个方式是输入我们的一个ip地址对吧,就是说正常的方式。

输入一个我们的一个ip地址来去进行一个ping,好的话。

如果说攻击者通过我们之前的一些方法,来去进行一个命令的一个拼接,然后在这里拼接的时候的话,它就会在代码里面可以看到,他通过这样子的一个方法把我们的一个ip地址,因为ip地址是一个顶分十进制的一个形式。

大家都知道对吧,就说一个正常的ip地址,它都是啊这样子的一个形式对吧,好的话,如果说你这里,这里这个ip地址包含有其他的一些字符的话,那说明你的这这里的话它是不是一个ip地址。

如果你不是一个ip地址的话,你就不会让你去执行这样子的一个命令,因为你的这个功能,就是为了去拼这样的一个ip地址,而不是说啊其他的能够去传递其他的一些字符,然后通过这样子的一个方法来去啊。

过滤掉或者说来去防御啊,攻击者通过这种啊,通过我们的一些命令拼接的一些字符来啊,传递我们其他的一些命令,这样的话呃能明白吗,因为我们这里要去调用,就是说要去执行这样子的一个拼命令的话,就说要去啊。

带带入到我们的这里的,一个需要杠x一去执行我们的一个片命令的话,我们首先就需要好经过前面的这些警察嘛,如果这样的话,这里的一个代码的话,就是把我们的就是首先去判断,我们的传入在这里的一个字符。

它是否是一个正常的一个ip地址,如果是正常的话,就带入到这里去执行,不正常的话,那说明他是恶意的一个字符。

就不允许你去进行一个命令的一个执行。

然后有问题的扣一,没问题的扣二,好都没有问题了,那么我们继续,呃前面的话呃我通过这样子的四个例子,就是说来给大家就是呃介绍了演示了啊,通过这样子的一些字符命令,拼接的一些字符来去执行我们想要的一些命令。

对吧,然后的话我们来看一下我们通过啊,就是说通过这样子的一个命令执行的一个漏洞,我们能够去,做一些什么样的一个操作,首先第一个的话,我们可以通过这样的一个命令执行,来访谈一个shell。

反弹shell的话,第一个问题就是啊我们常见的一个nc来反弹,需要它的一个命令的话,就是像这样子。

这句话是利用了一个这个nc,而关于这个nc的话,大家呃有去使用过吗,或者说了解这个工具吗,这是一个呃我们常用的一个命令,常用的一个工具就是nec cat,如果大家不了解的话,大家百度1下吧。

因为这种工具的话就是一些常见的一些命令,它的一个使用啊,有没有什么太多的一个好讲的,就是啊我们这个nc的话,它它这个功能的话很强啊,还是比较强大的,能看到他这句话可以进行一些端口扫描啊。

就是通过nc啊来去呃,就是探测指定的一个端口,它是否去是否是存活的,还有的话我们可以进行一个一些,文件的一个传输,还有呃传输一些目录哦,还有的话就是我们常用的通过nc来去进行静力,这样子的一个连接。

就是好得到一个shell,我们具体的话以这个例子来进行一个查看,首先的话你要反弹这样子的一个shell的话,呃,这里执行的一个命令的话是nc杠n l p44 ,在这里的意思的话就是它通过nc这个命令。

然后的话在本地监听了一个444的一个端口,诶,然后的话我们以这一个例子来去进行一个执行,就以这个例子来去定一个执行对吧,我们在这里的话,我们通过这一个分号,或者说其他的一些符号。

来去进行一个命令的一个拼接,我们可以在后面的话接这样子的一串,主要要更改的,主要要就是要去更改的一个地方,就是我们可以更改其他的一些端口,比如说我这里的话改个一个五五的一个端口,然后的话去进行一个执行。

执行之后的话,你会可以看到的话,他在这里的话是一直在转的,就说他是有他的一个命令的话。

是今天一个端口对吧,这个端口的话它其实是而在我们那个服务端,他一直有在倾听的,就说等待等待一个客户端,或者说等待一个呃,就是说等待一个客户端去连接它,好的话,我们可以呃。

因为我是在这个服务器上面执行了一个命令,我们可以通过啊。

let's start,这样子的一个命令来查看我们的一个端口,就说我们之前的话是啊。

之前的一个命令是在这个服务端对吧,就是说在这个服务端进行一个,444的一个端口,我们这里的话来查看一下这个好吧,我是4455的一个端口,来查看一下它这个端口,它是否有在处于一个listen的一个状态。

然后这里的话我们可以看到,我们通过这样子的一个net start查看,就查看端口的话,可以看到这里,它本地的话是有一个五五的一个端口,是处于一个listen,也就是处于一个今天的一个状态。

它使用到的一个工具的话,就是这个nc这样的一共一个工具,然后的话他在这里经听了,这样子的一个端口的话,我们怎么去得到一个shell呢,我们在另外的一个机器啊,这里的话是我们的一个靶机机器对吧。

然后这里的话是我们的一个,是我另外的一个过往的一个机器,在这里的话我可以通过nc,然后的话接我们的这里的一个靶机的一个i p,47。1007,5。10177,然后的话接好加我们的。

就说他这里今天的一个端口,也就是我们要去连接的这个服务端,它的一个端口,服务的一个端口,然后的话你可以看到我今天做的话,他这里的话有呃返回了这样的一些数据,然后这些数据的话。

我们其实可以看到这里的一个数据的话,就是我们嗯不对啊。

是这里啊,这里的一个呃目录。

这个目录的话是在ex 1 c啊,为什么是在这个目录呢,就说因为我们在这里他执行的话。

他执行之后的话,它的一个单前目录就是在这个目录对吧,切换到这个目录来查看一下它的一个文件,没看到他在你的这里nc连接之后的话,它返回到这样的一些数据的话,就是我们在这里这个靶机上面的一个目录对吧。

然后的话我们可以来执行其他的一些命令。

啊这里的话我这里就是我这边的话。

我把它断掉了,就这个零件一断掉的话,就这边的一个呃。

就是这边的一个监听状态的话,就会被啊也会被断掉,我们可以看到当前的话,它是没有这样的一个端口,今天的,然后可以看到这边的话是啊,刚刚的话是一直在转的对吧,是一把叉。

这边的话是已经就是啊程序已经执行完毕了,我们重新来一下。

mini,这样的话我换个四四的一个端口。

然后执行执行之后的话,它就在我们的一个在这边的一个服务。

这边的一个服务器上面,执行了一个监听端口的一个命令,44444的一个端口对吧,好的话,我们在这边的话去进行一个连接哦,云接受的话就是这样子的一个状态,应该能看可以,你可能觉得这样的话是卡了,其实不是。

他这里的话是返回了一个shell,我们可以执行命令,有问题啊,是不是你们在零吗。

我不使用这个了,我直接在服务端这边执行这样的一个命令,然后我这边进行一个邻居连接之后的话,可以看到它是可以返回这样子的一个shell的,就我们可以在这里去执行一个命令,p w m d当前的一个目录对吧。

id当前的一个用户的话是root,因为在这边的话,他执行的话是一个root用户去执行的,关麦对吧,这就是得到了这样子的一个呃,能够执行命令的一个shell,然后这个需要的话。

其实跟我们就是大家之前用的一个用菜刀对吧,用菜刀通过一句话吧,得到了这样得到了一个啊,就是啊连接成功之后的话,我们有一个虚拟终端对吧,那个虚拟终端的话其实也是类似的,通过我们的一个一句话嘛。

建立了一个零基,来得到他当前的一个用户的一个终端,就是得到了这样,像这样子的一个可以交互式的一个命令。

终端对吧,然后这里的话就是一个nc,然后第二个的话还有就是一个tnt,这里的话其实呃也是,这里的话就是用的这个tnt这个mini,然后这里的一个不同跟上面的一个区别的话,就是在于这边的话它是好用。

tnt主动去连接指定的一个i指定的一个ip。

说今天的一个端口,所以说在这边的话它是一个正向的一个连接,就是说我们首先需要在我们本地用mc来。

今天这样子的一个端口啊,今天这样子的一个端口。

然后的话呃我们在在这边,这里的话需要改一下tnt连接的一个ip是。

然后连接一个端口号是666,然后我在这边去进行一个执行。

我们执行正可以看的话。

他在在这边的话,同样的是一直在转的,就是说然后的话可以看到,在这里的话返回了这样子的一个连接,可以看到这里的话是哦,来自于这一个四期这个ip的一个零件,就是这里的这个啊这个服务器的一个连接。

它主动的连接到了我们的这一个端口,然后他返回了这样子的一个需要,我们可以通过执行命令,通过这个需要执行命令查看呃,可以看到这里的话,就是这个啊服务器上面的这样的一些文件。

我们可以就通过了这样子的一个啊。

tnt的一个方式反弹回来这样子的一个shell,然后其实大家呃也可以去进行一个连接的。

就是呃就说这一个tell啊,用这个nc的方式的话。

就是说你在这边执行之后对吧,执行之后的话它就会啊今天一个端口。

然后的话你在本地,或者说你用你在windows上面,你也可以通过nc区进行一个连接,然后这里的话第二个的话,这个tnt的话是主动的去连接一个ip地址,然后因为这里的一个服务端,它是在公网对吧。

他在公网的话,所以你需要一个公网的一个ip地址,也就是说能够在被这个公网服务器,能够访问到的一个ip,然后的话他才能够找到你,找到指定的这个端口,然后的话去进行一个连接来反弹一个shell给你。

哦哦还有的话就是我们可以通过命令执行来写,需要这样的话,我我就不演示了吧,其实呃就通过直接通过echo命令嘛,因为他能够它允许我们直接执行命令对吧,我们直接通过echo来写入。

我们的这样子的一个一句话就ok了,然后这里的话呃就是下面跟上面的话,就说这里的这个一句话的话是呃,稍微有一些不一样,它不一样的一个地方的话,就是我们可以看到上面的话,上面的这样的一个呃。

需要的话有这样子的一个分号对吧。

这样子的一些分号,还有这种单引号,然后的话,如果说我们比如说我们上面的那个黑名单对吧。

就是,比如说我们这里的第二个这个例子二,这里的一个黑名单对吧,他对我们这里所写的这样的一个,菲律宾的一个一句话对吧,因为我们的一个菲律宾代码的话,它是以分号做一个结尾的,所以说你在这里的一个黑名单。

他把我们的一个分号替换为空之后的话,我们的写入的一个一句话ph代码,它是啊解析不了的,就说他无法因为你存,因为它是要以一个分号结尾,就是说表示你的这样子的一个代码结束了。

这样子以分号结尾的这样子的一个代码,才是一个完整的,一个符合p p p,h p的一个语法结构的一个代码,然后pp解释器的话,才能够去正确的解析里面的一个啊一句话,所以说我们在这里的话。

我们需要就说不去使用到这样子的一个分号,来上传我们的一个一句话,然后这里的话就是呃可以通过这样子的一个,一句话的一个构造,因为里面的话是没有包含有这种封号的,然后的话来绕过那个黑名单的一个检测。

然后它的一个使用的话其实就类似的,其实它就是一个啊拼接l,也是就说一个通过这样子的一个方法去进行的,一个构造,首先的话我们可以看到就说在这里,在这里的话我们通过呃,通过在这里啊,把我们的一个get。

用get方式获取二这一个参数所传递的一个值,然后的话付给了这样子的一个啊符号,就说赋予了这样子的一个变量,是这个竖杠,大家要注意,就是这里的话是就这个多了,服饰表示在ph里面是表示冰量。

然后输给了这样子的一个下划线的一个变量,然后的话再把它拼接到了这里,拼接到了这里,然后的话在就在这边的话,就是跟我们前面的一个一句话是一样的了对吧,好的话,还有就是呃通过菲律宾来去写shell。

就是说我们前面的话是写我们的一个,一句话对吧,然后的话我们可以通过啊,一句话来写我们的一个小马,然后的话来上传我们那个大马,就说如果说你直接通过一个一句话去连接,可能服务端不稳定对吧,你要执行命令。

或者说有相应的一些啊检测的一些手段是吧,就可能你的一个连接的话会失败,所以的话我们可以通过这样子的一个命令执行,来去写一个啊小马,然后这里的话是通过一个ask的一个编码。

通过一个编码的一个形式来进行的一个呃写入,就是说我们通过这种编码方式的话,我们代码里面的这种特殊的一些字符对吧,他可能有做一些过滤什么的,就完全的进行了一个绕过,然后的话就是第二种呢。

就是通过这个base 64的一个编码,就其实前面的话也讲过,就也是类似的,然后这里的话我再强调一点,其实前面也有说过了,就是说在post的参数当中的话呢,是不能出现这种出现这样子的一些字符的。

你就说你在post参数当中,如果出现这样子的一些字符的话,你的这样子的一个请求是呃,就是说请求就发送不过去的,他是不会允许你出现有这样子的一些字符,所以说我们就通过这样子的一个base,64的一个兵马。

来去除里面特殊的这样的一些字符,因为你被16 14编码之后的话,它是像这样子的一些数字跟大,小写字母的一个组合对吧,然后的话呃,然后的话就是我们知道就是base 64的话呃,它有一个特性。

就是你比如说我随便输入一个字符对吧,他做一个编码编码之后的话,他后面的话会有两个等号,这两个等号的话,其实就相当于就是呃,就是你缺的这样的一个位数的话,它就用等号来去进行一个填充。

关于具体的一个还有一个编码的一个原理的话,大家可以自己去了解一下,好的话,我们想要去除这样子的一个等号的话,我们可以通过二次的一个base 64编码,就说把我们的个等号啊也可以去进行一个去除。

然后的话变成一个完完全由这种大小写字母,数字组成的一个字符串,这样的话我就不去呃,前面也操作过了,我就不去进行一个操作了,好好好,下面的话我们一起来了解一下,就是命令执行漏洞的一些,咳咳咳咳。

关于防护的话,主要的话就是呃三点,首先第一点的话就是禁用高位的这样的,一些系统函数,就是说我们前面啊大家回想一下,就是说我们前面讲命令执行,我特意就是好,给大家就是介绍了这样子的一些,能够导致代码执行。

或者说命令执行的这样的一些函数,就说这些函数的话,其实它是存在危险性的,然后的话这一些函数的话,我们可以通过呃禁用它,因为我们如果说代码里面存在,有这样子的一些系统函数的话对吧。

如果你没有对他做一个严格的过滤,或者说呃程序员在写代码的时候,有一些纰漏的话,就会导致这样子的一个命令执行的一个漏洞,导致命令执行漏洞的话,这样子的一个漏洞的话,它的一个威胁是相当大的对吧。

因为我们直接得到了服务器的一个权限,能够对它进行一些操作嘛对吧,然后的话这里的话就是一些比较危险的,一些系统的一个函数,像比如说ph info对吧,我们前面的话啊,一直使用这种ph info的一个函数。

来去测试,他是否能够去执行我们的这样子的一个,菲律宾代码是吧,然后还有的话像l5 啊,还有这种系统,调用系统命令的这样的一些函数等等的一些,前面的话我只是列举了一些在这边的话呃。

比较全的一些就是一些高位的一些系统函数啊,我这样的话就大概列了一些,然后的话,禁用这样子的一些高位系统函数的话,我们一个禁用的方法,就是在我们的一个配置文件里面,我们需要修改我的一个配置文件,好的话。

有一个第三波function时的这样子的一个选项,然后我们在这个选项下后面,添加我们禁用的一个函数名就ok了,就是说大家再去进行啊,一个安全的一个防护的时候对吧,或者说,配置啊。

做这种安全安全配置的时候,如果你不想要不用不到这样子的一些呃,高位的一些函数的话,我们就可以通过这样子的一个配置,来去进行一个禁用,就就是就是这样子的一个呃这一行,然后的话我们在默认的话。

它是没有添加任何的一个函数的,然后我们在后面啊添加我们这样子的一些,想让它禁用了一些函数,然后的话注意是要以分号做一个结尾,然后你进入之后的话,就我们就,在ph代码当中,它是无法去,就说我们。

比如说我们得到了这样子的一个shell对吧,我们通过web应用得到这样子的一个shell,得到这样子的一个shell之后的话,我们想要去执行我们的一个系统命令对吧,就是说啊通过一个虚拟终端。

执行我们的一个区好吧,系统命令,然后的话你在执行系统命令的时候,他其实同样的就是啊,要去调用我们的这样子的一些调用系统命令,这样的一些函数,然后的话如果我们把这样的一些函数,把它给禁用之后的话。

你就算得到了他的一个shell连接,但是的话你还是无法去执行一些系统命令,比如说查看你当前的一些用户啊,还有查看当前的一些目录啊,就是说通过命令去进行一个执行当的话,如果说你通过菜刀对吧,通过菜的话。

他不是啊,有返回给你一个那个就是文件管理的吗,那些文件什么的话,是你同样的是能够去进行一个查看的,但是的话你是无法去执行一个命令的,如果你无法去执行一些命令的话,那么你就是说你只能是啊。

能够查看这样子的一些文件,而无法去做一些其他的一些操作,比如说我们通过这样子的得到了这样的一个需,要去进行一个啊通过啊进行一个内网渗透对吧,如果说你得到了这样的一个服务器。

它正好是啊某个公司的一个外网的一个机器,然后的话这个机器的话它是放在放在公网上的,然后这一个服务机器的话,正好他又能够去跟内网去进行一个通信,能够去访问内网对吧,那么我们这个时候的话。

我们得到这样子的一个机器的一个需要,我们就能够通过,因为它里面的话是这个机械化,是能够访问到某个公司的一个内网的对吧,那么我们可以通过你这一个机器,作为一个跳板机来去访问到内网的一些机器,对吧。

当然的话这里的话呃好话就,第二个的话就是一个严格的一个过滤特殊字符,就特殊字符啊,我们前面的话再去进行一个呃,利用他的一个命令执行漏洞对吧,我们想要执行我们额外的一些命令的话。

我们就需要一些特殊的一些字符来拼接,我们的一个命令对吧,好,我们既然我们需要去使用到攻击者,需要使用到这样子的一些特殊字符,来执行我们额外的一些命令对吧,那么我们就可以把这样子的一些特殊字符。

做一个严格的一个过滤,比如说前面的这种黑名单,虽然它是有一个缺陷的对吧,好的话,我们也可以通过白名单的这样子的一些,白名单的这样子的子的一个策略,来去验证用户的一个输入,那白面的话相比于黑名单。

他那个呃安全性的话是要高的,但是的话可能你的这样子的一些,就是与你一个这个的话,要看你的一个业务的一个需求,给你一个白名单的话,你可能会你的一些需求,你需要到需要去使用到这样子的,一些字符的时候。

比如说那么的话你就会造成一个误伤对吧,然后呃其实最恰当的一个方法的话,其实就是根据你的这样子的一个功能点对吧,比如说我们前面说到的这样子的一个例子,这个粒子三粒子四对吧,我们这里的一个代码的话。

就是他根据你的这样子的一个功能点,它的一个实际的一个呃需求来进行一个防御啊,因为你这里提供的是这样子的一个,ping命令的一个功能对吧,那么你ping的话,你肯定是你肯定是要去就说你输入的话。

是你要输入一个正常的一个ip地址对吧,然后的话你才能够是啊,执行这样子的一个拼命令对吧,来去检测啊,目标ip的一个存活啊,那么如果你不是一个正常的一个ip地址的话,那么说明的话你的这样子的一个输入的话。

就是一个恶意的或者说是不正确的,不合法的这种输入,那么我们就不让你去进行一个执行,这个的话就是说好,针对这样子的一个ping命令的这种功能点,来进行一个代码的一个防御。

然后的话如果说你是通过这种白名单对吧,你通过白名单,难道你去指定的某些ip,这这样子的话可能会有一些局限性,就是说如果说你只是,你只是只希望这样子的一些ip,能够去进行一个啊拼命令的一个执行的话。

你就可以去使用这样子的一个,白名单的一个策略,然后第三个的话就是这个safe mode,safe mode的话就是一个菲律宾的一个安全模式,就就是通俗的说的话,就是以安全模式来运行一个p h p。

然后这个开启了这样子的一个safe mode的话,就是我们在同样是在配置文件里面设置,我们的一个safe mode为on,就可以开启它,然后开启之后的话,就是他我们前面有提到的这样子的。

一些访问文件系统啊,还有调用系统执行命令,执行的这样的一些函数的功能,它都会被限制,比如说像这种啊执行一些系统命令的这种命令,这样子的一些命令他都会被限制,然后的话,还有就是菲律宾扩展当中的一些函数。

也会受到影响,比如说呃前面的有说到的这种啊,就是那个防反引号,就是反引号,还有像这种需要杠e x e c这种函数,如果说你开启了这个safe model的一个呃模式的话,就说这种这种能够去执行系统。

面临这种函数的话,是啊不能够去进行一个使用的,啊就是在这里说的就是这种啊操作符标记,操作符就是这种反引号,前面也说到,就是说在这个房引号里面的这种变量的话,是能够啊执行里面的一个代码的。

然后就是在菲律宾安全模式打开的时候的话,诶你打开之后的话,这些函数你都不能去使用的话,那么你有些需求的话,你肯定是无法实现的,所以说的话他就你想要去使用到这样子的,一些函数的话,你你必须要在啊。

这个safe model e x e x e c d i r,这个选项指定你啊,就是指定你目录的这样的一个程序,就是说在这个目录下面的话,是能够去执行我们的这样子的一些命令的。

来去调用我们的这样的一些函数的,好的话呃,大家对啊,我上面我前面讲的这些内容的话,有没有什么疑问呢,讲着讲着又时间都忘了,呃就大家对我前面讲的这些内容的话,有没有什么疑问呢,有问题的话,扣个一没问题吗。

扣个,都没有问题吗,好多美元的话,那么呃我把最后的这样的一些东西,把它说一下吧,啊就是啊命令执行漏洞的一些实验,这样的话我就写了有四个实验,就这四个实验的话,呃今天不知道大家有没有去自己去尝试做。

就说这两个实验命令执行漏洞,还有的话就是这个struck two的这种框架,的一个漏洞导致的一个命令执行啊,然后的话呃课后作业的话就是这几个实验吧,啊还有这个single ph 5啊。

还有啊这个imagic mini执行漏洞这几个方面,这几个实验大家在课后的时候去做一下,然后的话呃,下节课就是周日,就这周日的话是啊要上班的,就说在周日的时候,大家要大家注意一下。

就是啊周日的晚上的话是啊正常上课的,然后的话在周日的时候啊,对这些就是对这些实验如果有必要的话,给大家做一个讲解,然后的话呃大家就是在做这些实验的时候,做一些笔,建议大家的话做一些笔记啊什么的。

好的话呃,我计划的话,其实我计划就是在下节课的时候呃,就是能有同学能够就是说,就不是由我来去讲这些时间,就希望有同学能够就是分别给对这几个实验,大家就是做完之后啊,有就是你所学到的一些东西啊。

还是说这些实验怎么去完成,好的话,你从这些实验里面就是啊学习到了哪些知识点,希望大家能够呃分别做一个分享吧好吧,然后的话如果有我还有的话,就是,大家在呃把这个靶机上面的这一些。

而昨天还有今天讲的这样子的一些啊题目,大家做一下吧,然后的话可以的话把你的一个过程给记录下来,然后呃,就希望大家能够去养成这样子的一个习惯,就是做笔记的一个习惯,就说呃因为你就其实就比如说我吧。

就比如说我我自己去就去研究一个东西的时候,你可能你刚开始你去啊,你研究的话你就明白了,然后的话你可能你过一会你不用的话,你就忘记了,所以说这个时候的话,你就通过做笔记的话记录这样子的一些东西。

就你方便你自己下次的一个查看对吧,好的话,你这种笔记你其实也可以,就是啊可以把就是把你学到的,所学到的一些东西记录下来,然后可以啊整理成文章什么的。

或者说你可以自己搞个博客对吧,然后发到博客上面做一个分享嘛对吧,然后本节课的一个内容的话就到这里结束了,应该没有什么其他的一个问题了,没有什么其他问题的话,那么我们下课吧,然后我,我要把这些东西啊。

我把b我把ppt发到群里。

P24:第22天:命令执行漏洞-命令执行考核讲解 - 网络安全就业推荐 - BV1Zu411s79i

我们本节课的话本来是一个那个课程考核嘛,就说对于我,我上次布置了一个作业的一个课程考核,然后的话本节课的话。

我计划,就是因为就是布置给大家的一个任务的话。

就是那些实验嘛,就是那几个实验好,其实这几个实验的话,这几个实验的话,大家对照着这个指导书来去进行一个操作的话,应该是没有问题的,然后这个的话其实就是我呃,昨天已经讲过的这一个这几个。

这几个r c干片的一个代码,然后的话其它的一个原理其实是一样的,然后我是把它呃,就是把它写到了这里,这个的话应该大家都没有问题,应该对吧,就跟我昨天讲的话是一样的,然后的话这里的话呃。

呃唯一的一个不同的一点的话,就是但这里有一些扩展对吧,就是说还有哪一些其他的一些呃,hello的对吧,这些的昨昨天的话我也有涉及,然后的话就是我们比如说我们的这里的,过滤了这种,过滤了这种啊。

分号结尾的这种呃字符我们怎么通过啊,我们怎么通过命令执行来写,我们的一个一句话对吧,这个实验的话大家应该没有什么问题吧,啊有有有问题的吗,啊有问题的扣一,没问题的扣二,作业太多了吗。

你不是都我我看你的话写的都写完了呀。

你的这个文档的话写的呃,我觉得话我觉得写的很标准啊,就就好。

我我不知道大家有没有自己去做啊,就是我这边的话。

收到刘邦主任那边给过来的作业的话,就三个,就大家大家做完的话,还是你把那个过程给记录一下,记录一下嘛对吧,然后你做这个实验的时候,你里面涉及到的一些知识点,你就做笔记嘛,把笔记做下来做下来。

然后坐下来之后的话,你可以呃就是把它给分享给别人对吧,然后的话下次你可以做一个备忘嘛,第二个实验怎么拿shell,是这一个吗,啊这个struct to的这个实验,大家有没有什么问题呢。

就是怎么能拿shell是吗,怎么拿,需要的话呃,呃今天的话就是呃这个时间的话,今天白天是有同学提出了一个问题对吧,就是你再去打开这个url的时候会有问题,然后这里的话是因为哦,你是照着这里去敲的对吧。

就是这里的话指导说的话,他后面多了一个杠,多了多了一个干的话,他访问的话就是在这里的这一个目录对吧,这个目录下面,然后你访问的话是能够访问到这个页面的,但是你去啊点这个一点的话。

它就会呃多了这样子的一个目录,就是说他你点击这个edit,它本来是去访问到这个orders的这个目录,下面的一个文件是吧,然后的话你这里呃直接直接敲,直接去访问这样子的一个链接,也就是这一个目的话。

你再去啊点这个一点的话就会报错,因为没有这样子的一个目录下,有这样子的一个文件,好get shell的话,这个呃实验机里面的话,有给这样子的一个呃plc吧,然后这个的话其实就是呃。

把我们的这个plc发过去,发包发过去就可以了呀,然后这里的话呃就是这个plc的话,它是一个java的一个就jsp的一个java的一个脚本,然后的话里面的话其实大家不懂java没关系啊。

然后的话你是要注意里面的一个payload,就是里面呃它是有一个执行命令的一个语句,我这样的话先创建一个吧,或者要不pc啊,现在现在大家看不懂呃,没关系啊,就是说你现在,因为大家都刚开始接触这一块的话。

你现在看不懂这个plc是正常的哦,你在后面的话你理解过来了,理解就是你自己去深入的去理解了之后的话,然后的话你懂这些代码的话,你就会很好理解了,对这里这里嘛,这里的话就是呃会弹出一个计算器出来嘛。

然后你在这里的话,你可以写你其他的一些命令啊,就比如说你cmd调用cmd来执行一个额,ip configure啊等等的这种,然后因为这里弹个一个弹出一个计算器的话,就呃你能够直接的能够看得到吗。

直接的能够看得到,他是呃执行成功了吗。

然后这个实验这个实验有有没有谁想呃,就是志愿志愿过来讲一下,就是说你是怎么去进行一个操作的,有有谁想分享一下,自己做这个实验的一个过程嘛。

呃这里给改过来的作业的话,就呃就一位同学做了呀。

这位同学你啊想讲讲解一下吗,就说你是怎么去和操作的,就其实这个我我们看一下它的一个过程吧,好吧,其实就大家跟着指导书做的话,应该是没有太大的一个问题啊,然后前面这句话我们就呃我看了。

然后它的一个部署就是我们这个环境里面的话,就是呃有这样子的一个部署环境的一个环节,就是我们在就是在我们去做web安全,或者说去做这种外表的一个研究的时候,这种漏洞环境的一个搭建其实是一个基本功啊。

就是啊如果说你碰到一个新漏洞,或者说就是这个漏洞对吧,你想去自己做一个复线,你要你要复兴的话,你就需要去搭建环境,搭建环境的话,这个而过程当中的话,其实你可能会发现很多的一些问题。

然后的话需要你自己去做一个解决啊,这里的话就是前面的话就是先部署环境嘛对吧,然后部署环境的话就是。

指导书这里的话有一个下载链接嘛,这个下载链接的话就是这个漏洞的一个握包,就部署这个环境所需要用到的一个握包,然后你只需要打开这个呃,tom cat,就这个参map的一个环境。

然后我们就能够去进行一个访问,然后注意的话,tom cat默认的一个端口是8080的一个端口,要加这个端口,然后你才能够去访问到,对这里的话就是tom cat的一个默认的一个页面,然后这个时候的话。

我们我们需要把我们的一个握包给它部署进去,然后我们部署这个web的话,要放到这个tom cat的一个web根目录,然后tom cat的一个web根目录的话就是在好哥,在这里好的话。

有一个web a p p s,这个的话是homekit的一个默认的一个web根目录,是这样子的,好的话,我们只需要在,只需要在这里把我们的一个握包给丢进去,丢进去丢进去之后的话,我这里还没下载。

我先下载一下这个压缩包,然的话给它解压出来,截出来的话呃,解压出来之后的话,就会有这样子的一个文件夹对吧,然后我们只需要把这里面的a p p s,这里面的这两个握包,然后把它丢到这里来,丢到这里来的话。

我这两个握包的话,其实就是这个structu两个文件,就这一个框架的一个文件,然后的话呃可以看到我们只把它放进去的话,它会默认的就是这里的一个tom tom cat服务,就是把它放到根目录的话。

他会把我们的这两个这两个握把把那个解压,解压出来之后的话,就是这样子的呃,两个文件夹是吧,好的话,我们要访问的话就是,加我们的这样子的一个文件名就ok了,然后我们我们其实直接就这样子访问对吧。

就直接访问这个文件夹,它会到这样子的一个页面,然后这里指导书的话,它是呃把它呃,就是后面的话会有加这样子take orders对吧,然后大家的一个问题就是呃,你是直接就是照着指导书去进行一个。

orders去进行一个抄写的对吧,然后你这样子访问,他其实也是能够去访问到这样子的一个页面,但是的话你去点这个edit,你可以看到这里的一个链接对吧,我这里点一下,点一下这个一点的话。

它其实是会访问到这样子的一个word目录,然后然后你这里报这样子的一个问题的话,就是你找不到这样子的一个路径,没有这样子的一个路径,因为这里的话是错了的啊,其实我们只需要把这里的一个干。

就是那个表示这word这个目录的这个杠给去掉的,话,就能够去正常的去做一个啊访问对吧,然后的话呃,mp,我们先打开bp,然后这里的话其实也给了你这样子的一个plc,对吧,就这样子的。

然后这里的话其实就是一个玩我们的这里的呃,我们抓包其实也是抓这样子的一个包嘛,然的话我们其实就是往我们这样的子的一个,页面发送这样子的一个呃java的一个代码,然后主要的话其实就是执行命令的话呃。

这个不好抓,嗯怎么找不到呢,啊就是这里吧,他执行了一个命令对吗,command哎呦,这也不好看哦,嗯没有其他的机器,哦这太小了,看不清,就其实就是我们的这里的,就执行了一个命令对吧。

然后我们要写的一个命令的话,就是这里就是啊,调用我们的一个cl c的一个命令,然后你执行之后的话,它就会在这里弹弹弹出一个计算器,这里的话就说明你的这样子的一个命令的话,是执行成功了的,明白。

那这样的话其实我们也可以做一个根啊,我先发一下,我先抓个包,而且尊重,可以看到我这里执行之后的话,它就弹出了这样的一个计算器对吧,这里的话就说明我们的一个命令的话,执行成功了嘛。

好这样的话其实我们可以呃做一个更改,执行什么呢,not hard,然后我们再去进行一个发包,可以,这里的话先把它关掉吧,然后我再去进行一个发包对吧,发包之后的话,他这里的话就弹出了这样子的一个记事本。

就说明它,我们可以通过在这里修改我们的一个命令,来执行,我们的一个就是啊,我们在windows上面的一个系统的一个命令,这样的话就是这样子的一个啊命令,执行的一个实验。

然后大家看不懂这样子一个p o c的话,没关系啊,大家先知道这样子的一个漏洞,然后的话我们怎么去进行一个利用,对啊,实验的话对啊,就是按照按照指导书做就行了,但是的话你做的话还是。

你做的话还是因为你这些东西你没有接触过嘛,而且你之后的话也可能会碰到,就说你做的时候建议的话,大家做一个笔记吧,sk two的话呃,对在内网当中的话呃,在外网也有的,内网的话呃,内网的话一般的都比较多。

就说struck to的这种框架的话,因为呃然后的话在内网的话,其实很多的这样子的一些服务的话,它的一些漏洞都呃,因为在内网的话不比在外网,内网里面的话,因为呃只是内部的一些人员人员。

如果说你进进入到内网的话,内网的一些很多的一些漏洞,说不定他没有做一个及时的一个修复的话,能够直接去进行一个利用的,这个时间的话呃,还有什么问题吗,应该没有问题了吧。

然后呃,这位同学我觉得写的很好,就是啊你就这样子的一个,就是你做完这些这样子的一个实验,这个的话就是你的一个笔记嘛对吧,就你做完之后。

这个实验的话应该没有问题啊。

啊后面的实验还要我这个实验没有问题,呃然后的话后面还有两个实验,而这个实验的话我就不讲了吧,大家照着做吧,然后这里的话这个的话就是这个image magic,这样子的一个组件。

就是说这个的话它是在处理图像,就是呃在处理图像的一个库,然后这个image magic的话,它是存在这样子的一个命令执行的一个漏洞,然后的话呃,其实我们就是说,如果说你有碰到这样子的一个image。

这个这样子的一个漏洞的话,然后正好就是说你的,就是说你得到了这样子的一个shell对吧,你得到了这样的一个shell,然后你通过ph inf查看它,它的一个图像处理库啊,有这样子的一个组件。

然后这个组件的话正好是漏洞的一个版本的话,而且它的就是说执行命令的时候有啊,有一些限制好的话,就是说你不能够你不能够去调用我们的,比如说system的这种函数,去执行我们的一个系统命令对吧。

那么你可以尝试去使用这样子的一个,这样子的一个image magic的一个漏洞,因为这个漏洞的话,它是呃,在它的这个组件存在这样子一个命令执行漏洞,所以说我们可以通过他的这样子的一个命令。

执行漏洞来得到一个shell,好步骤的话,我就不讲了吧,然后这样的话我说一下这个三个ph p5 的一个,远程命令执行漏洞,这个漏洞的话呃,就是刚出的时候啊,是比较火的。

而且它的一个就是它的一个影响的话是很大的,因为你直接可以通过构造这样子的一个,很简单的一个payload,来去执行我们的一个呃执行一个命令,远程的一个命令,执行好的话,还能够通过命令执行写shell。

来得到web服务器的一个呃web shell,然后这里的话我这个实验的话是一个三个,菲律宾v5。1的一个版本。

然后的话还有还有一个的话,就是v五点的一个版本。

也是同样的存在这样子的一个漏洞的,然后这里的话五点的一个版本的话,我是把它放到一个啊,我们的这个靶机服务器上面去了,大家可以以这个作为一个靶机去进行一个操作,然后的话实验的话大家照着做就好可以了。

然后我这样的话就以这一个靶机做一个,就是操作的一个演示嘛。

然后关于这个漏洞的一个原理的话,因为涉及到p h p代码的话,呃这里的话我不去对它做一个讲解。

就只是告诉大家这个漏洞,然后他是怎么去进行一个利用的,然后有怎么样有怎么有哪些利用的一些方法,然后怎么去进行一个测试呃。

诶。

电脑有点卡哦,哎今天忘记带我电脑的充电器了,所以的话用的是电源的就比较卡,啊这里的话我这里的话有这样子的一些文件,然后大家对这一个如果说对它的一个原理,就是想去做一个了解的话。

我这样的话有有这样子的几个啊,几篇文档,大家可以去进行一个呃研究,然后的话这里的话我们主要是就是我们看一下,它的一些plc,然后我这里的话是一个五点的一个版本对吧。

我们用现成的一个plc来去进行一个测试,我们只需要在后面接这样子的一串,然后的话我们其实可以看到它这里,执行一个命令,就是这个和mi对吧,到我这里来进行一个执行对吧,可以看到它这里的话是呃阿帕奇。

阿帕奇的一个用户,然后我们这里关于前面他这里这样子去进行,一个构造的一个原理的话,我这里不说,然后啊我这里也不去给大家做一个介绍,因为介绍的话可能大家不是很明白,就是呃大家先知道这样子的一个东西对吧。

然后我们拿来看这里它的一个payload,后面这里的一个构造对吧,然后我们其实可以看到这里的话是有一个functions,这个functions的话就是这里的一个对吧,这个函数这个函数我们应该熟悉吧。

这个函数的话其实就是我们这里有讲到的,这个call you the function error这样子的一个函数,对吧好啊,我们看一下这样子的一个函数,就是说这个函数的话,它是会把我们的第一个参数。

作为一个回调函数来调用,然后的话把我们的这里这里传入的一个参数,作为我们这里的一个回调函数的一个参数传入,就是意思就是把我们这里传的一个参数啊,给这呃,给我们的这里传入的一个函数,来进行一个处理啊。

其实我们看一下这样这样子的一个例子,这个例子的话就是呃我们这里哦,这里的话我是写死了的,就在这里的话是一个第一版本的,然后我这里一个靶场,我这里一个靶场的话就是,哪一个呢,就这个这个的话就是一个。

就是我里面已经写死了嘛,然后我这里的话是啊,写了就是把我们的一个函数,以及我们的要执行一个命令,把它给分开,由我们自己去定义去进行一个传输,大家可以去,大家应该都有做。

然后这里的话就是我们把我们这里传入的,这样子的一个参数对吧,我们通过post的方式传递这样子的一个参,传给这一个变量,然后把这个变量的话负啊,给了这个error数组的第一个,第一个第一个值。

然后的话把这里的这个数组里面的参数,把给了这样子的一个s的一个函数,去进行一个处理,然后其实我们只要传的,我们是一个菲律宾的一个代码对吧,然后的话我们的一个pp代码,就会给我们的这里的一个set函数。

去进行一个解析,然后的话就能够去构造这样子的一个命令,执行好,我们再来回看一下这里的一个plc的一个构造,其实我们可以发现,他这里跟我们前面说到的一个命令,执行的一个啊构造其实是一样的对吧。

可以看到我这里的话先传这样子的一个啊,call you the function error,这样子的一个函数对吧,然后的话再传一个啊,这个传给这个数组,various这个数组。

然后他的第一个值的话是一个system对吧,然后第二个的话就是一个户外卖,然后其实我们从这里的话就能够看出来,其实这里我们给的这里的两个参数,它会给我们的这里的这一个函数,去进行一个呃处理。

然后处理的话可以看到,它就相当于是我们这里的一个这样子,去进行一个传参,我们传一个system对吧,然后再传一个户外mi,然后我们在呃不是这一个啊,最近啊不是这个,啊这这一个,关麦对吧。

然后我们去进行一个提交,提交之后的话就执执行了我们的一个呃,换mi的一个命令对吧,然后其实在这里的话,跟我们这里的话一个例子是类似的,诶哪去对吧,我们同样的是构造了啊,通过利用他的这些这样子的一个漏洞。

然后的话构造这样子的一个命令,执行的一个函数,然后给这一个命令执行的一个函数传我们的啊,传我们的就是执行一个命令的一个代码,传给这个函数,然后的话来构造这样子的一个命令,执行的一个p o c。

这样的话大家应该能理解吧对吧,就说前面的话,其实呃也要给大家介绍这样的一些函数,啊,这这个的话其实就是呃把我们这里的这个命令,执行的一个函数做了一个啊实际的一个利用。

来构造这样子的一个命令执行的一个p o c,所以说呃就前面大家不要觉得,前面讲的是一些函数,可能不是很好理解,然后的话,就是我们首先要去你了解这样有这样子的一些,能够去啊进行一个命令执行的。

一个构造的一些函数对吧,然后的话我们之后的话再碰到这样子的一些,让你去进行一个,就是进行一个命令执行的一个构造的时候,你就能你就知道怎么去进行一个使用了,然后的话怎么去进行,给给我们的这样子的一个函数。

去进行一个传输的一个传递,穿梭的传递来进行一个命令执行,然后其实后面的话也都是类似的,然后我们这里的话就是船舱的不一样是吧,可以看到这里的话是一个pp for,然后然后的话就是前面的话就是执行命令嘛。

后面的话就是一个写shell嘛,写shell的话,这里同样的也是使用的这样子的一个函数,然后这里的一个呃还有一个问题的啊,这里的一个不同点的话。

就是这个fire put contains这样子的一个函数,这个函数的话就是我们的呃,我们看一下它是一个用来写文件的一个函数,就说把我们的一个字符串写入一个文件。

就是使用这样子的一个file put content的一个函数,然后我们知道它的一个意思的话,那么我们就能够比较好理解的,这样子的一个p o c对吧,就他的一个意思的话。

就是通过这个file put content的一个函数来啊,写入到啊,就是把我们这里的一个代码写入到这样子的,一个需要点菲律宾的一个文件对吧,然后这里的话其实就是一个,菲律宾的一个代码嘛。

然后的话再给这个函数去进行一个解析嘛,然后的话就能够执行我们在这里的一个命令嘛,然后我们来可以来测测试一下,来进行一个shell的一个写入,这样的话我们直接把它粘过来贴过来。

然后我们这里直接密码的话是c c,c来进行一个执行,执行之后的话可以看到他这句话,反而这样的只对一个值的话,就说明我们这里执行已经成功了,然后我们来验证一下,看是否好,shell已经写不进去了。

我们写入的一个shell的一个名称的话,就是需要点菲律宾对我们来访问,访问发现的话,他是能够啊,就是没有任何的一个报错或者回血的话,就说明我们这样子的一个小老师,已经写入成功了。

然后我们来测试一下密码是ccc,我们执行一个pp for,执行可以看到的话是我们的一个小时,已经成功的写入了,然后嗯然后还有一点的话我再强调一下,就是我再强调一下,就是一直有同学就是有这样子的一个疑问。

就是你们的这里的,你这里传递的一个菲律宾的一个代码,一定要是以一个分号结尾的,就是以一个就是说这一个函数,它是去执行我们的一个菲律宾代码对吧,去解析我们的一个传入的一个菲律宾代码。

那么你就需要一个分号去进行进行一个结尾,然后的话就是还有一个另外一个例子的话,它的一个不同点就是这个,asset,这个asset这个set的话,我们其实前面也一直有介绍,就是说这个的话。

他是把我们它会把我们的一个呃,就是传递的一个字符串,这里是一个字符串,而不是说一个菲律宾代码,就是说它是可以不用以一个分号,去进行一个结尾的,然后的话我们这里传入的一个是一个字符串。

比如说我们就传一个ph pf对吧,这样子,然后不以分号结尾,我们去进行一个提交是能够执行的,然后你这里加一个分号,它同样的是把你当成一个字符串,然后的话他执行的话,也是能够去执行我们的一个psp代码的。

因为他这里的话是他这个函数,它会把我们传递的这一个字符串,作为一个菲律宾代码去进行一个执行,这样的话大家要去啊做一下区分啊,然后的话还有就是执行这种系统命令的时候,系统命令的话。

你是调用了一个系统的一个函数对吧,然后的话也是说没有说有这样子的一个分号,因为封号的话是菲律宾代码的一个结尾,就说表示你的这个p h p代码是啊,完成了,就是说写完了。

呃然后的话其他的一些的话都是类似的,这样子的,嗯然后的话就是两个版本不同的话,就是它就是它的一个构造的,在前面的构造的这些地方它是不一样的,呃大家这里的话大家能理能理解吗,就说应该好,能听得懂吗。

呃剩个pb 5去转,做一个探测的话,你就这你用云吸也可以,还有其他的一些看这个指纹的一些,到邮区进行一个咳咳,不好意思啊,如果你用原系,你也可以去进行一个探测嘛,你还有其他的一些可以探测网站。

指纹信息的一些网站。

一些工具什么的。

好然后这里的话因为是一个像这种测试的。

就其实你像这种生个p h p的话,他其实啊从他的一些页面,他的一些访问的一些有链接什么的,也能够有一个有一个基本的一个判断的,比如说这种public对吧,然后在这里一个测试页面的话。

但是没有做其他的一个开发,所以的话能够直接看得到这样子的一个,测试页面,它只是一个就是菲律宾的一个框架,然后的话有很多的一些基于这一个菲律宾,三个p h p框架啊,对开发的这样子的一些呃网站。

它都是会存在这样子的一个漏洞的,指纹探测呃,我这里,呃大家有没有什么还有还有疑问吗,我刚刚那一个就是讲解应该能能明白吧,只是啊就是它的一个漏洞的,具体的一个原理的话,我这里没有讲,没有给大家做一个讲解。

因为可能现在给大家讲这个,大家也不是不会很很很很很明白,而且讲了可能还会更加糊涂,所以说这样的话,我不讲前面的它的一个漏洞的一个构造,就说怎么去通过这样子的,就是说通过这样子的一个高招。

来进行一个命令执行,然后我这里的话是把我结合我们之前的一个呃,能够去进行一个命令执行的这样子的一个函数,然后的话它是怎么去构造的,对吧,通,它是利用我们的这样调用,我们的这样子的一个。

能够去执行命令的这样子的一个函数,然后的话来执行我们的一个命令,就是后面的这一节,他是这样子去进行一个构造的,它的一个原理,呃大家有问题吗,有问题的扣一,没问题的q2 ,有有问题吗,你是有问题还是没问。

没问题。

指纹识别的话,我这里给给一些网站吧,啊就这个其实用这个what web,这个的话,也能够识别很多的这样子的一些指纹啊,当然的话呃,这个的话是就是对国外的一些网站的话,它的一个这种。

比如说这种c m s的这种指纹。

信息化识别会比较准确,当然可能国内的话准确的话不是会不会很高啊。

这样的话它同样的能够去进行啊,就是你网站信息的一些收集。

好大家没有问题的话。

那么我看一下,还有还有什么给大家讲解的,这样的话呃,我们把这些实验的话都大概都过了一遍,然后的话这命令执行的这题目的话。

如果大家还不理解的话,呃大家再去做一做做一下。

然后的话大家自己详细的一些东西的话,大家去百度吧啊,就自己去查找资料,然后的话把这些东西呃,把它给理解理解理解透,然后我看了一下这位同学,他的就是他的一个文档,我觉得,他这点的话呃挺好的。

就是可以看到他这里的话,就是在做这些命令执行的时候对吧,他不是他,我看到他有一个就是说他的一个目的,就是用这个命令执行对吧,然后去写shell对吧,这个的话大家大家不要就是大家发散一下思维。

就不要说就只是去进行一个执行一个命令对吧,我们上节课其实也讲了,就是我们通过执行命令能够去呃写信,其实最终目的嘛,最终目的的话就是利用他的一个命令执行漏洞,来得到我们得到它的一个shell。

然后的话再去进行其他的一些啊测试对吧,就这里的话,大家一定要自己去多动手去操作一下,比如说你这样子的一个echo去写shell对吧,然后的话你呃你可能中间会有一些问题什么的,对吧,这些东西的话呃。

大家只有在自己自己去进行一个操作过之后的,话,你才会啊能够去比较好的记住,或者说比较好的理解,然后的话还有直接命令对吧,通过nc nc这个工具,它的一个使用的话,我不是呃也发了一个文档嘛对吧。

那个文档的话应该写的很详细了,我这句话。

就这一个文档,就这一个工具,这工具的话我们在自己做这种啊,就是反弹shell的一个测试的时候会经常会用到,然后的话这样的话我应该写的很详细了,它的一些功能什么的,进行一个fnshell。

进行一个正向的一个连接对吧,然后这里要注意一点的话,就是你这里的一个正向连接,你要弹shell的话,你必须这个nc要支持这样子的一个,杠一的一个参数,你才能够啊返回这样子的一个shell。

然后的话呃。

可。

哦还有一个还有一个某还有一个地方,我在上课的时候我忘记讲了,就有一个有一个那一个。

就这一个pig的一个rep。

刚,呃这个的话呃上节课我忘记给大家说了,就是这里的这个对吧,我们前面的话给大家就介绍了这个pg replace吗,好的话,我们可以通过这样子的一个方式来构造,我们这样子的就是一个一句话嘛对吧。

然后的话这一个的话我们,最年化跟上面一个的话我做了一个改变,就是有一个更改的一个地方,然的话我们来看一下吧,就从代码来看一下,就是它的一个不同的一个地方的话,就在于就是,我们先从头来看一下。

首先的话就是通过get方式来获得,这样子的一个date对吧啊,获得从啊d参数传递过来的一个值,然后给它这一个data变量,然后给这个data变量的话就是放到了这里,放到这里的话。

就是我们要去进行一个匹配的一个值对吧,然后这些代码的话是写的是一个啊,就是匹配所有嘛,然后它同样的是一个杠一的一个参数,然后我们用我们上面的这种方式。

比如说我要我要让他去执行对吧,因为它有概念的一个参数。

如果我们这里去传我们的一个,hp的一个代码的话,它是能够去进行一个解析执行的对吧,这个等于,比如说我传一个pp info对吧,然后我们可以看到的话,他在这里的话,他把我们可以看到。

这里的话是输出了一个菲律宾four,然后它是一个大写的,好的话,他没有执行我们这里的一个可以拼four的,一个mini对吧,然后呃,诶没有,我们之前的这个,ig进行一个直行。

可以看到这样的话是能够正常的执行,我们的一个ph p代码的,然后在这里的话,他把我们的一个p h p的,一个本来要执行的代码,他做了一个大写的一个转换。

就把一个小写把它给转成了一个大写好,我们来回看一下代码,它这个不同的话其实就是在这里,这里的话它的一个它这里有一个代码,就是把我们的一个传传入进去的。

这这个值把它做了这样子的一个处理,这个处理的话就是把我们的一个函数,把它把我们传递的一个字符字符串。

把它转化为一个大型,然后转化为大写的话,它就没有,她没有去进行一个执行菲律宾的一个代码,然后这里的话要去logo,而且绕过他的这样子的一个呃这种方式的话,我们就通过我们前面的这样子的一个,就是双引号。

就双引号里面如果包含有变量的话,它的一个菲律宾解释器,它会将其就是替换为一个变量,解释后的一个结果,就是说意思的话就是说在上双引号里面,如果是含有变量的话,那么他会呃首先它会p h p解释器。

它会解析我们啊,这个变量里面的一个ph p代码对吧,解析之后的一个结果,它就会呃把它就是解析之后的一个结果,就是我们这里的一个啊,这个双双引号里面的这一个变量的一个结果。

然后的话单引号的话他是不会做一个处理的,所以说我们这里的话,因为我们传入的一个值对吧,传入一个值,它会给这一个啊函数做一个大写的一个处理,然后如果我们是用这样子的一个双引号,去进行一个传递。

然后的话传递的话是一个这种变量的一个形式,那么它首先会去,就是处理我们这里的一个啊pp的一个代码,然后解释这个p h p代码之后的话,就是能够正常地执行我们的一个传入的,这样子的一个代码。

我们可以来看一下。

拍拍乐的话就是像这样子,我们确定一个呃,啊这里这里是在linux的话,不是ip config,if configure好,我们去进行一个执行,然后可以看到的话,他这样的话是执行了。

那首先把我们的一个ph p代码对吧,就做了一个呃解释执行,执行之后的话就是它的一个结果就是输出来,然后这个就是啊这里的一个传入的一个变量的。

这种就是绕过他的这种写的方式。

我们可以通过这样子的一个形式,来去进行一个命令执行,然后这里的话啊上节课是忘了讲了,就是讲完这个之后的话没有啊,就是上节课不是有一个那个双引号吗,双引号的这样子的一个题目,就像这样子的对吧。

然后我们在双引号里面的这个代码的话。

他会直接去进行一个解析执行的。

呃然后的话呃大家呃有有没有什么疑问呢,怎么进我分享的一个文档,呃,我不是发在群里了吗,那个分享的这个这些文档,然后你不是啊,不是直接就可以访问到吗,我这句话是写在有道云,有道云笔记里面的。

就我是通过有道云分享出来的,呃,然后然后你就是我把这几个链接我再发一遍吧,我发群里,你直接通过访问这些链接,就能够访问到我的,我分享的这这些笔记啊,我再发一遍,然后然后你这里可以保存啊。

就是保存保存到你自己的一个笔记嘛,然后你不想用这一个有道云的话,你可以下载下来吗,然后这个的话是一个挖个洞的,八个洞的一个格式,这种可以打开,然后你可以用那种,就如果你知道怎么写马克东的话。

你可以下一个马克东的一个编辑器对吧,然后用那个打开啊,其实呃你你们自己做一个笔记的时候,也就我反正做笔记的话,我是习惯用习惯用马克动哦,就是用像这样子的一,因为啊自己做的笔记的话,你肯定看起来要好看嘛。

因为你不是说做完之后就不用了,你做完之后相差也要看对吧,你这美观一点的话呃,看起来舒服一点吧,然后你这里写不上,是说啊这个三个hp你写不进去吗,是你是说这个三个app菲律宾你写不进去吗。

啊plod出来了,然后呃这里的话其实哦我这个有发给你们吧,其实我在这个网站上面,哎我课后的话我再发给你吧,然后这里的话是有一个啊我ppt里面其实也给了。

就是有这样子的一个get shell的一个脚本嘛对吧,他是用python写的,其实其实你看一下它里面的一个代码的话,其实,也不是很难啊,就是其实主要的话就是在这里,在这里。

这里他可以看到他这里的话有这样子的一些plc,对吧,这些p c的话其实就是我们呃就我这里的诶,就这些这些测试的一些p o c对吧,然后的话他直接把它放到这里来,放到这里的话,然后通过python去啊。

请求指定的,这你给定了这一个ul对吧,然后的话把这样子的一个plc把它给放进去,就就是把它给拼接,拼接之后的话去访问嘛,然后访问之后的话看他的一个回血,看是否能够呃访是否有能够访问成功。

然后的话不是有一个就是输出一个,就测试一个plc,哪个plc可以用吗,它就是这样子的一个形式,然后的话还有就是他可以这里可以get the shell嘛,get shell的话其实就是通过写嘛。

通过写一个菲律宾的一个呃,通过这种可以去写啊,就写我们的一个一句话对吧,然后的话连接连接之后的话,他这里的话是通过代码来展示的,这样子的一个get shell的一个界面嘛,其它的一个原理的话。

就是这些pop c就大家如果自己也知道了,然后如果你懂派审的这种话,你自己也可以去写这种测试的一些脚本的,这也不是说很复杂,然后的话呃大家呃有问题的扣一,没问题的q2 ,然后的话我再给大家一分钟的时间。

进行一个提问吧,mc,看一下嗯,手干扰。

这里的话我也没我,我没这样子去尝试过了。

不行啊,不能这样子去进行一个,不能这样子去进行一个命令的一个执行,这样的话我也没我没这样子去尝试过呀,呃我课后再去,我课后去研究一下吧,你看那个叫啥呀。

不行不能这样子。

不能这样子去执行,那这样的话只能执行这里的一个单个的命令,空格啊,这个的话我课后我去研究一下,如果有结果的话,我再我再跟你们说吧,还还有其他问题吗,这个的话呃,我课后我去尝试一下,因为我没我没有去。

我也没去尝试过这样子,有问题的扣一,没问题的扣二,如果没问题的话,那么我们哦本节课的一个内容的话,就到这里结束了,好没问题是吧好,那么那我们下课吧,好吧好啊。

命令执行的一个课程内容的话,就就到这里结束了。

posted @ 2024-09-29 12:59  绝不原创的飞龙  阅读(2)  评论(0编辑  收藏  举报