粉丝2.3万获赞5.6万

这是一个网盘应用,网盘应用希望增加一个清空文件的功能,于是开发者开始写代码,并且一个清空按钮,为了图省事,直接在按钮上增加跳转链接,跳转的页面会直行清空, 并显示清空成功信息。这时开发者已经发现,无论是刷新页面还是复制这个链接,单独打开清空文件都是会被执行的。但是想着这样违规操作也只是会清除自己的文件而已, 谁会这么无聊搞自己呢,于是就不管了。但是旁边的攻击者发现了攻击者复制清空文件的请求链接,编造了一些钓鱼信息,并附带上这个链接,挨个私信发送给网盘应用的用户, 之后点击过链接的用户文件通通都被清空了。这就是最简单的 csrf 攻击,通常是结合钓鱼的手段,诱导用户非自愿的执行一些援战的 请求,从而达到攻击目的。开发者发现后做了紧急修复,不再直接使用链接,而是改用表单提交的方式,并且吸取教训,清空文件的路由请求方式由 get 请求改成 pos 请求,这时直接浏览器打开链接就会因请求方式不对而被拒绝掉。但是攻击者也升级了方法, 既然不能直接使用链接,那就自己创建一个页面,页面上做一个表单,表单提交的地址填的是网盘清空文件的地址, 并用 gs 设置页面加载,完成时自动提交表单,然后把自己创建的页面地址再私信发给网盘用户。 网盘用户点击链接后,文件还是被清空了,攻击效果依然有效。那还能怎么办呢?很简单,要求表单提交的时候需要提供当前的设施 id 就可以了,这样后端验证表单提交的时候,就可以拿当前的设施 id 和表单提交的涉审 id 进行比对。表单不提供涉审 id 或者不匹配的,都认为是恶意请求,不做处理。而攻击者不知道网盘用户的涉审 id 无法在表单里提供,于是过不了验证,他只能从页面去抓取涉审 id。 但是这个抓取到的涉审 id 是攻击者自己的, 比较时还是会跟网盘用户的射程 id 匹配不上,这样就可以防御 csif 攻击了。在表单里加入的这个射程 id 有个专门的名词叫做 csif token, 其中采用射程 id 是最简单的方式,当然其他算法也可以, 只要能证明属于当前绘画的就行。总结 csrf 攻击的防御手段, is get 请求只用来获取数据,不操作数据, 超市操作数据的请求通通加入 csf token 进行认证。注意, csf 攻击只存在于有状态的网络请求,而无状态的 api 接口是不需要做 csf 攻击防御的。

c s r f x x 攻击和防御的应用层故事很多人一听到 c s r f x x, 第一反应是,又是安全那套,离我很远。但我跟你说一句实话, 这俩几乎就是外部攻击的入门必修课,而且它们都发生在应用层。一、先说 x x s, 你 信了页面,其实页面在骗你。 我们先从 x s s 说起。 x s s 全称是跨站脚本攻击核心,一句话就够了。攻击者把脚本塞进了你信任的网页里,你以为你在和网站对话, 其实你在帮别人干活。一个非常经典的场景,假设这是个评论区,你写了一条评论,这篇文章真不错,但攻击者写的是一段 java script 代码,如果网站没有做任何处理,服务器会原封不动地把这段内容发给下一个访问页面的用户。 于是脚本在你的浏览器里执行了。注意,这句话在你的浏览器里,浏览器可分不清这是作者写的还是黑客写的。 e k s s a 能干嘛?能干的事非常多。读取 cookie, 冒充你发请求 to token, 弹窗只是最低级的表演。 所以 x s s 的 本质是我借你的浏览器干坏事。二、 x s s 怎么防防? x s s 的 核心原则只有一个, 用户输入的永远不可信。具体怎么做?输出前做转译,不直接拼 html, 少用婴儿 html, 合理使用前端框架的自动转译,配合 csp 内容安全策略。一句话总结,不要让用户输入变成代码。三、再说 csrf, 你 没点,但你已经点了。接下来是 csrf, csrf 的 全称是跨站请求伪造。它的可怕之处在于,你什么都没干, 但锅已经背上了。一个生活化的例子,你已经登录了某银行网站,浏览器里有合法的 cookie。 这时候你打开了另一个网站,这个网站悄悄加载了一张图片,但这张图片的地址其实是 一个转账请求。浏览器一看,域名对得上, cookie 也带着,于是请求就发出去了。服务器一看,合法用户,合法 cookie 转账完成,你全程没点按钮,没输密码,没察觉。 c s r f 的 核心问题是什么?一句话说清楚,服务器只认 cookie 不 认,是不是你本人点的?四、 c s r f 怎么防?防 c s r f 思路很明确,让请求不可伪造, 常见手段有几种,一、 c s r f token, 每个请求都带一个随机值,攻击者拿不到。二、 same side cookie 限制 cookie 不 能乱带。三、关键操作,用 pos 的 叫验来源, 别什么都 get。 四、二次确认,尤其是转账改密码。五、 c s r f 和 x s s 的 本质区别,很多人容易混, 我给你一句话,版本 x s s 代码被注入,浏览器被利用, c s r f 身份被借用,请求被伪造,但他们有一个共同点,都利用了你对网站的信任。六、 最后一句话总结, x s s 是 我在你页面里动手脚, c s r f 是 我借你的身份干坏事。而真正的防御关键只有一句,永远不要相信来自用户的一切。

今天呢我们要讲的是 csrf, 就是黑客用目标用我的身份去执行某些非法的操作,给大家演示一下如何去篡改目标战略上的用户数据。我这边呢已经登录好了,这边有个修改个人信息,我们把它全部改成七, 用 fc 位的进行抓包。这边呢可以自动生成一个 csrf 的,利用脚本布局一下,我们可以发现他这面已经修改好了,我们把刚刚复制的那个利用脚本粘贴,把这边换成一个四五六 保存,我们把这个文件发给他,他一点击这个东西就进行了一个修改,他就变成了四五六。学废了吗?不懂就问吧。

本视频耗时五个月,共计三十小时,三十八分钟,零基础自学黑客从入门到入狱,全套教学视频包括工具安装与使用、黑客攻防渗透测试等,共三百六十八集。此视频内容敏感,很可能被下架,建议先收藏再观看。声明,此教程仅供学习, 禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你。主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 前面我们已经学会了怎么样用代码和工具对外博网站的密码进行拆解,下面我们要来看一下自己的网站怎么样防止别人去暴力拆解。 可能有一些同学已经从生活里面实际的案例里面想到解决办法了,比如说现在我刚好知道了王思聪的手机号,我想要去爆破他的支付宝的账号,那么支付宝他是怎么防止你去暴力破解的? 我们先来看一下一些比较简单的防御的措施,以及有了这些简单的防御措施之后,我们怎么样去绕过。那么现在我们需要去切换一下靶场的安全级别, 把代理关掉以后,我们把它的安全级别切换到 medium 的 级别,再回到这个暴力破解的场景啊,我们可以去查看一下它的原码,这个是 medium 的 代码没错,大家要确认一下啊, medium 的 级别里面它到底做了什么样的调整啊? 依然是你把你的用户名和密码拿上了之后呢,他会立即去查表匹配,但是后面他做了一点啊,如果说你的用户名和密码不匹配的情况下,他会 sleep 两秒钟,也就是服务端他会隔两秒钟再给你响应一个结果,那么 我们来确认一下啊,这个,这个,哦对,这个是后端的代码,也就说服务端他会隔两秒钟才给你响应,那这个稍微的降低了一些我们的这个破解的难度, 因为你本来可以多线成并发,很快很快的去拆解请求,是吧?现在他他响应稍微的慢了一点, ok, 你 延长了你暴力拆解的一个时间,但是从本质上面来说啊, 既然只是时间的问题,只要我的时间足够足够长的话,我依然能够猜出来,是吧?所以这一关呢,从我们的这个工具使用方法来上面来说没有任何的区别,所以这一关我们也不用去做了啊,只是你会看到你的在 b p 里面发起请求的时候,它的响应稍微的慢了一点,一 隔了两秒钟才会响应出来一个结果, ok, 那 下面我们再看第三个安全级别, high 安全级别,同样的,我们先看一下它的源码,这个是 high 级别的源码, 它又做了什么不一样的事情呢?前面还是一样的,拿到用户名和密码之后直接去查表 好,然后这里有一个东西多出来的东西啊,它加上了一个叫做 n t c s r f token 这样的一个东西,那么这个这个东西我们在之前的 c s r f 漏洞里面有讲过的啊,如果是 没有学习过的同学,你要先回去听一听,我们就我们在这里就先不介绍这个东西它的作用是什么了的,它本来是用来防止一个叫做 c s r f 这样的一个漏洞的,但是他,他又被添加到了在害级别里面呢,他应该是应用到所有的关卡里面了吧,所以我们这里呢也需要先去解决这个问题。简单的来说是这样的啊, 他为了防止第三方的网站去利用你的客户端一个已经登录或者说有 cookie 的 这种身份去发起请求, 他会在客户端去请求的时候给他下发一个这样的叫做令牌的东西,下发一个 token, 你 会拿到这个 token 以后再去访问服务端,他就认为你这是一个合法的,合法的访问,但是这个 token 呢,用过一次以后它会失效,所以说它变成了这样的一种情况啊, 你要先访问一次,拿到一个 token, 你 才能做下一次的访问,它会变成一个这种这种串形的访问。但我们这里面临的问题就是在 b p 的 这个工具里面,我怎么拿到它上一次的 http 响应 结果里面给我的这个 token 值,这个是我们要解决的一个问题啊,好,然后最后面呢,他的 sleep 两秒钟又变成了随机的零到三秒,那这个对我们来说影响也不是特别的大,主要就是这个 ok, 这个是我们面临的一个问题,在 bp 里面到底怎么从 上一次的请求的响应结果里面拿到一个值变成下一次请求了一个这个字断值呢?好,现在我们先来抓一次包,在 high 级别下,密码随便输入一个, 打开 b p, 代理在拦截这里重新开启它的开关, 火回浏览器 log in 一下。好,抓到包了,我们来确认一下啊, boot boot 的 这这个场景好,里面确实也有了一个 token 了, high 级别, ok, 把它发送到 intruder 模块, 先清空一下。我们这一次要去拆解或者上送的字段有哪些呢?密码添加一个, token 也是一个添加一下啊,好,现在我有两个字典需要去拆解,大家可以先思考一下啊。这里我们到底要用四种模式里面的哪一种模式呢? sniper 不 行,因为它只能去拆解一个字典。 bedroom 不 行,它们两个的值肯定是不一样的,它的值是来自于密码字典的,它的值呢,是从上一个 hdp 请求结果里面拿到的 pitchfork, ok, 好像可以。 class 的 bug 呢?不行,绝对不行啊,因为这个 token 是 一次生效的,你用过了以后, 它就会在服务器销毁,你还想要跟密码去做交叉验证,那是不可能的啊。所以我们这里只能用 pitchfork 来到 payload 的 set 的 这里。第一个是什么?第一个是密码,那我们就用密码字典啊,我们用简单一点的十个密码减少时间了啊。第二个, 这个就有点麻烦了啊,它要从上一个 h d b 响应结果里面拿到服务器给我下发的这个 token。 我 们应该用哪种模式呢?这里我们要用到这个叫做 reclusive grip 地归匹配的模式,它是根据一个规则,从 h d b 响应结果里面去过滤出来一段文本,但这个规则在哪里没有啊?好,所以啊,我们要来到这个 options 里面的设置找一下啊,这里面有一个 grip extract, 我 们需要通过这个 grip extract 去设置。好,首先我们去点一下 add, 我 们要去添加一个规则,这个规则当然是从 hd 的 响应结果值里面去匹配到一个文本,但是怎么匹配呢?你现在又没有一个响应结果啊,所以我们先拿到一个响应结果再说。 好,有了,我们去找到那个 token, 实际上在 d v w 的 关卡里面,它是怎么样去保存这个 cookie 并且发给服务器的呢?它是放在了前端的一个 input 的 hidden 的 属性的字典里面啊,一个隐藏字典里面,所以我们去选中它, 双击选中它,这个时候它给我自动生成了一个规则,它的意思是什么呢?在上一次 http 的 响应结果里面,如果说有一串文本,它的前面是 value 等于单引号, 后面是单引号空格斜杠兼括号空格,空格 form。 如果它是这样的一串东西的话,那中间的这个内容 就是我们需要的 to 肯值。这个应该比较容易理解啊,大家可以也可以把这个东西理解成是一个正则表达式,就是只要他的前面是这样的东西,后面是这样的东西,那中间这个就是我们要把它提取出来的内容。 当然有同学可能有一个疑问,如果说刚好有另外一个自断值,他也是这样的这样的,那会不会有问题呢? 会有问题,到时候我们再再改规则就行了啊,我们先用一个简单一点的规则好,然后这里呢,我还要把它复制一下, ctrl c 复制一下,然后, ok, 好, 我已经给给它提供了一个这样的规则了啊,前面是这样的,后面是这样的,中间就是我们需要的这个 token, 现在再来到配乐的设置这里, ok, 看到没有啊?现在我就已经有这个规则了啊,我们去选中它。好,当然你第一次去请求的时候 就需要的是那个 token 值是什么?就是刚刚他给我的啊,你第一次请求,也就是我们现在的第一次请求啊,他不能没有 token 值,所以我们把刚才复制的那个服务器给我们的这个 token 值,把它填到这里就 ok 了, 现在我们就可以开始发起攻击了,来看一下啊。走,你报了一个错,在地归匹配的这种配漏斗的情况下啊,它不能使用多现成的请求。什么意思呢? 哎,我们刚才讲了啊,实际上因为服务器给你一个 tok, 你 去请求,然后又拿到下一个 tok 啊,又去请求,又拿到一个 tok, 又去请求,他只能是排队的, 排队的串行的请求啊。所以你这里用十个病发的先生请求他是不行的。因如果说你是病发的请求,可以说 其中只有一个请求有 token, 其他的都没有 token, 那 是不行的啊。所以我们要创建一个单现成的这个请求。 single thread, 这个名字随便写啊, single thread 好, 最大的现成数,那就是一个啊,这个就是一个单现成的请求,我们用这个继续发,再来发起请求,看一下, 我们来好了。好,第一,这个第一个空的 payload 啊,我们不用管后面是不是每一次我们都拿到了这个 token 呢?很显然是的啊, 因为如果说不是从 h 被选中结果里面这个 b p, 它肯定不会随机生成一个这样的东西,是不是啊?所以我们的这个设置肯定还是正确的好,再打开这个窗口,我们来分析一下 这个,这个 token 是 我们填进去了啊,好,然后他发起了一次 h to b 的 请求,服务器又给了他一个 token, 他 把拿到的这个 token 呢作为第二次请求好,然后发起请求又得到一个 token, 把这个 token 呢作为第三次请求的 token, 它是串行的,依次的,这样去访问的好。怎么去过滤呢?还是一样的方法啊,排一下序码 好,这个经过我们确认以后啊,它不对,所以只有,只有,只有这个是对的啊, 只有这个 password 是 对的。 ok, 这里呢,有没有更加好一点的方法?如果说他的太多请求数不一样,我很难去找,比如说有四七八幺的,有四七九几的,还有五千多的,去找到我们的这个正确的请求,太难了,那怎么办呢?这里我们可以 再教给大家一个方法,就是直接从响应结果里面去过滤一个内容。 ok, 我 们再来设置一遍啊, discard, 来到 options 里面,我的需求是这样的啊,我想让在它的这个响应的结果里面包含什么样的内容的时候呢?给我打一个勾,那这个功能叫做 great much, 哎,我打个勾啊,如果这个响应的结果里面包含了什么样样的表达式的时候,给我 flag 标记一下,我先清空一下啊,清空这些我都不是我要的,我要的是什么呢?是这个啊,我把它复制过来, 哎,就是这个,我刚才显示有点慢啊。 welcome to the password protected。 如果说它的 h d v 的 响应结果里面出现了这个东西,我认为密码就输对了,是吧?好,艾特一下啊,注意千万不要忘记点一下艾特,如果你不点的话,没有这个规则,它也没有办法帮你去, 没有办法帮你去匹配好,当然这里啊,我们应该要要重新抓一次包才行了,不然的话第一个请求是没有,第一个请求是没有 token 值的啊,我们再来抓一次包,我们唯一增加的就是增加了这个设置,来到拦截这里, 我们准备好输入一个密码,开启拦截走你好,抓到包了,我们再来重复一遍啊,帮大家温习一下这个流程。发送到 intruder, clear 一下 密码值,添加一个分解符 token, 添加一个分解符 picture 模式 payload。 第一个呢,密码是十个密码, token 地归匹配好,好,那这个时候我们还得再来一次啊,来到这里 艾特一下,获得一个响应,选中 token 值,并且复制一下, ok, 把复制的 token 值填到它的第一次的请求这里,然后在这个啊 groupmatch, 我 们又要重新填一次啊, clear 一下, 复制进去,艾特一下,好, ok, 现在还有那个好,我们用单线程来请求 startattack, 大家注意看一下啊,如果有那个 welcome 的 话,它会不会给我打一个 flag 呢?会不会在这里打一个 flag 呢?这个我就不用去,不用去筛选了,是不是 有没有啊,大家注意看啊,经过我们设置,让它在如果包含了这样的一个字母的话,给我自己打一个 flag 有 没有,我就直接找到这个东西了啊, ok, 所以 大家又掌握了一个新的技能。 好,现在我们再回到 d v w 的 这个靶场啊,把代理关掉。 medium 里面,它使用了一个 sleep, 对 我们的爆破有影响,但是不能彻底的解决这个问题。 high 级别里面呢,它使用了随机的 sleep 加上一个 token, 但我们看到了这个 token, 我 也有办法去拿到, 也可以在工具里面去设置,是吧?那最后我们来看一下这个 impossible 的 级别,它到底做了什么样的事?我们来看一下源码啊,来分析一下。 tokyo 依然是存在的好,然后我们看到他拿到用户名和密码去查数据库之前,他定义了一些这样的变量, total failed login 三,也就是说如果你尝尝试登录 失败三次,他就会做一些事情。做什么事情呢?会把你的账户锁定十五分钟,那么按照这样的一个设定的话,我一个小时是不是最多只能猜四次了?一天只能猜九十六次,他这个效率也太低了,是不是 基本上就杜绝了拆解密码的这种情况?当然我们还可以把这个锁定的时间设置的更长,比如说像支付宝,他有可能锁定的是一个小时,两个小时,甚至是甚至是当天都不允许再登录,除非你用别的方式在验证你的身份,比如说短信重置密码或者人脸识别。 ok, 这个就会导导致了别人没有办法去对你的账户的密码进行拆解了,是吧? ok, 它会把你的表里面啊,有一个叫做 account lock 的 字段设置为 true, 我 们来看一下,看它的用户表里面,用户表里面啊,应该有有一个这样的一个字段 啊,没有找到,这里只记录了它的这个错误的次数,也就是它查表的时候有可能会根据它的次数,如果超过了三次的话,它就不允许 你再次去尝试了。最后面呢,看看有没有别的。还有一个 sleep, 它的这个时间又增加了一些了啊,时间又增加了一些, ok, 好, 所以这个 对密码尝试的次数进行限制,是我们从根本上去解决这个密码暴力裁决的漏洞的一种方法,当然我们还有一些别的方法。

大家好,我是十四军。大家好,这次我们来讲一讲如何优化 n 几个安全配置,以保障网站服务安全, 守护精英财宝,赶走小偷抢盗。是的,我们要做的就是借助我们的城堡守卫来保障城堡和其内部财宝的安全。 那应该如何做呢?首先第一步,隐藏 enix 版本信息, 为什么呢?这就相当于让城堡的守卫不告诉别人城堡的防御弱点以及门锁型号。原来如此。 第二步,强制使用 http, 为什么呢? http 是 明文通信,谁都能看懂,而 http 白 http 是 加密的,只有知道如何解密的人才能看懂。 而 s s l 证书,这就相当于国王印章,只有盖了章的才是真圣旨。 原来如此。第三步,限制请求方法, 这就好比乘跑只允许成本进入,而禁止翻墙进来,或者用试图撬锁等其他方式进了。 第四步,配置 ip 黑名单,这就好比给每个守卫一份通缉令,然后禁止通缉令上的人员进入。 第五步,可以由 the agent 的 检测, 守卫需要检查访客的着装和通行证,如果是小偷强盗就禁止他进入。 第六步,敏感路径保护与文件类型限制。 城堡的不同区域有不同的安全级别,只有公共区域才对外开放,敏感区域需要严格保护。 第七步,配置安全响应头,相当于在城堡的墙上装防盗网,窗户只能从里面打开的安全措施,安全措施。 第八步,默认服务器块返回。四四四,设置城堡的死亡入口,任何进入的人都会掉进陷阱。 这个用于处理所有未匹配域名的请求,防止 ip 直连攻击。 第九步,限制客户端请求体大小承保规定每次运送的货物不能太大,防止有人用大象撞门。 这个主要用于限制客户端请求体大小,防止大文件上传攻击。 最后总结一下,最小权限原则, 只授予必要权限,城堡的厨师不需要金库钥匙,园丁不需要进军卸库。永不信任始终验证,即使是国王的亲笔信,也要先检查印章。 世上没有绝对安全的网站,但多层安全防护,每一个安全配置都是给攻击者增加的成本。最好的防御 就是让攻击者觉得不值得攻击你的网站。是的,感谢观看。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防、渗透测试等,共二百七十二集。声明, 此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你。主流的网络攻击和防御的技术都讲得清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 本节课主要讲解是专题概述,相信大家在前面很多节课中已经学习了其他的漏洞, 那么 c s i f。 漏洞主要讲解以下几个内容,第一个是介绍 c s i f。 漏洞形成的原因,第二个是介绍漏洞的分类、检测和利用。最后一个是介绍漏洞的修复方法或者是防御方法。 当然修复和防御方法主要是代码层面的,而检测利检测和利用主要是通过半自动的检测。 适用的学习对象主要是网络安全技术的初学者,学习的目标是了解 c s i f。 漏洞形成的原因和危害。第二个是学会 c s i f。 漏洞的检测方法。 那么什么是 c s i f 呢? c s i f 就是 cross site request forgery 的 首字母就是 csrf, 而中文一般译作是跨站请求伪造 啊,因为经常录取 overtop ten。 在 当前的 web 漏洞排行中,与叉 s s。 的 搜索、注入等相比而言, c s r f 相对来说受到的关注要小很多,但是呢,危害却是非常的大。可以这么理解, c s r f 攻击就是攻击者盗用了你的身份,以你的名义发送了请求,但是这个请求是恶意的。 c s r f。 能够做的事情包括以你的名义发送了邮件啊,发送信息,保住你的账号, 修改你的个人信息,甚至于购买商品啊,虚拟货币的转账,主要的问题包括就是个人隐私的泄露以及财产的安全 啊。下面这个图就是我们的 c s r f。 漏洞学习的路线图,一个是攻击原理,然后是攻击类型的分类,后面是检测 c s r f, 最后是修复和预防跨段请求违章。 那么 c s r f。 工具的常见危害有啊,有发送邮件,修改账户信息,资金的转账,或者说网站被上传网码,就俗称的 get 笑。 那么一般情况下说有这些危害是因为网站存在这些功能。我们来看一下有些网站,我们在本地搭建了一个网站, 一般的情况来说是因为后台的管理 功能是比较强大的,可以看到可以上传文件,还有文件样式管理,这边我们可以试着创建一个文件, 可以看到在服务器上已经保存了这个文件。如果说在新建文件这边存在一个 c s r f。 漏洞的话, 再配合一个啊,就是后台前台叉 s s, 然后管理员访问啊,被叉 s s 攻击到的话,然后在后面就是可以添加一个王八的攻击 啊,可以写一句话之类的, 那么我们就直接就拿下了网站的管理权限, 这个 c s r f 的 攻击危害是比较强的。还有一些如果有一些网站存在说是 啊,资金转账啊,就是说我们可以提现的资金,然后他存在一个啊,一个账户,然后可以直接提现,我们在前台发送一个链接之后,管理员点了之后直接把那个账户修改了,之后他提提现的时候会提现到我们的账户上, 还有是修改账户信息,那么有些网站是 e c shop 之类的搭建的一种商城网站,肯定有一个是 资金管理,或者说是汇款账号,比如说大家买东西的时候往它的那个账号里面汇款,如果这个网站存在 c s i f 的 话,我们可以通过 c s i f 修改 他的汇款账号啊,修改成我们的账号,大家买东西的时候汇款的账,汇的款就汇到我们的账户之中,那么这个危害就是非常大了,因为涉及到资金啊,网站的管理,这些都是比较比较厉害的一些 c s i f。 漏洞, 那么客户的小集体是在 c s i f 漏洞的开源程序, 根据网络上公开的漏洞利用方法自己进行实验。那么我们给大家演示一下怎么到网上搜索,可以打开百度, 嗯, c m s c s r f。 我 们可以看到这边有一个 php css 组合进行 css 攻击啊, php css 后台 cf 加管理,就是在后台增加管理员的两种办法, 还有什么云购 css css 素材,网站拿权限或者是修改管理员的密码, 哎,还有很多的,大家根据网络上公开的这些各种利用方法,自己进行下载,然后进行根据他们说的办法,然后进行 c s i f 攻击的利用, 现在不会利用,没有没有关系,我们后后面会讲到怎么进行利用,怎么进行测试,这是 csr 漏洞的第二节课,这节课主要讲解 csr 漏洞的原理与分类, 接下来我们就来讲解一下 csr 漏洞的攻击原理,我们以吐血的方式来进行讲解, 这里主要有三个网站, a、 网站 b, 还有我们的受害者浏览浏览器,或者说我们的用户 c c s r f 的 攻击原理就是我们的用户 c。 第一步是浏览并登录了 可信任的网站,会有 a, 那 么 a 啊,通过验证之后,会在浏览器 c 处产生 a 的 cookie, 而 第三步的时候, c 又又在没有登出 a 的 情况下访问了微信的网站 b, 而 b 呢,就会要求 c 访问一下 a, 这时就发出了一个快速请求,浏览器载着。第二步是在 a 通过验证之后在 c 处产生的 cookie 而访问 a, 那 a 呢?是不知道第五步请求是 c 发出的还是 b 发出的,是由于浏览器带上了用户 c 的 cookie, 那 么它就默认是 c 发出的, 而最后是执行了 b 要求的一个请求,磨砺了 c 的 一次操作。那么我们现在就是说这个外部 a 存在 csrf 漏洞,这就是一个 csrf 攻击的原理。 csrf 攻击的分类主要是根据攻击场景来分的,第一主要分为两个,一个是 get 型攻击的场景, 第二个是 pos 型空机的场景, get 型空机场景。我们主要是举一下以下的一个例子, 就是说一个一个网站存在一个转账的这种功能,而转账的功能呢,它是通过 get 的 方法来实现的啊,在 url 的 链接里面存在了一个 user, 就是 给谁转账, 就是等于张三,就是说给张三转账,并且 money 就是 说金额,金额是多少,金额是一千, 之后呢?不管是谁,在登录的情况下,点了这个链接之后,就会往张三的账户里面转入一千的金额,这就是 get 型攻击的场景,它主要是通过 url 链接的方式来进行攻击的 啊。 pos 型通信场景就是主要是他的啊,就是说这边是一个增加管理员的功能,他主要是通过 pos 的 方法,把账户信账户啊密码这些 pos 的 这个脚本里面让他进行执行。 我们可以把这个 pos 的 请求缝装成一个 form 表单,之后在管理员登录后台的情况下,他点了这个网页之后,他就会模拟一次 pos 的 请求, 这就是 pos 的 攻击的场景。 csf 的 检测与利用 啊, c s r f 的 检测方式主要有两个,一个是手工检测,第二个是半自动的检测,手工检测主要是手工编写 p u c 的 代码,然后进行测试。半自动检测主要是通过工具啊, c s r f test 和 oppo switch 的 这两款工具。 c s r f 工具的利用方式主要有以下几个,第一个是可以修改个人信息,如就是说汇款的个人信息,把它修改之后,别人进行汇款的时候转到另一个汇款账号。 第二个是一些转账的操作,第三个是可以在后台增加管理员。最后一个是 csf 的 get show 或者是仓库的这些操作。 这里我们在服务器上面搭建了一个测试的网站,主要进行一些 csf 的 实力演示, 如何进行检测和利用。我们在测试网站的后台管理处有添加管理员操作,我们就来进行添加管理员看一看这个操作是否存在 c s r f 攻击。 打开网站, 网站是在虚拟机进行搭建,我们来进行登录后台, 这在这里我们可以看到管理员管理,有一个管理员就是 admin, 我 们在这边进行添加,打开 gopro switch 进行检测的,利用通过半自动的攻击方法, 我们增加一个一二三一二三密码,一二三的 管理员账号进行拦截,打开监听提交数据。在这里我们是如何进行 csi 无功机的 poc 生成的呢?我们点右键 这边可以有一个 generate c s f poc, 就是 生成 c s f poc 的 代码,可以看到所有的会自动进行生成, 我们可以 test in browser, 就是 浏览器的意思,打开复制,打开网页,打开网页, 先把本地的 drop 放弃关闭看一下, 先来看一下有没有管理员,还是一个管理员点击打开,要把拦截去掉, 还是得把拦截连接上来打开,然后点 submit 提交,我可以看到,恭喜你,管理员已经添加成功了,我们在前台可以看一下, 确实一二三的管理员已经进行成功的添加,这就是通过快捷这个生成 c s r f p o c 的 办法来进行检测的,当然它还有一个生成了一个 html 代码,我们可以拷贝 html 代码,然后放到 这 tm 页面里面 保存,先来把这个删除, 管理员就只剩下一个了。点这个我发现一二三的管理员也是会进行成功的添加, 我们到管理员可以看到,确实一二三是已经成功添加了, 这就是 c s l 检测与利用,主要是看你的后台有没有一些功能,如添加管理员,我们来测试一下这个是会不会存在 c s i f 的 攻击。 接下来我们再来看一下 os 补出的一款工具,它会监听在本地的八零八零啊,八零零八,这边监听一下,可以看一下也是本地的八零零八。 然后我们先先把数据填好,在这边可以 start recording, 打开录制,开始录制点,点击开始录制,提交数据, 可以看到会把数据抓下来,我们生成一个页面 保存,保存到 desktop, 嗯,放这个里面 添加了两次它,第一次是啊,我们在这边添加了一次,第二次是通过访问网页的方式又添加了一次,现在把它关闭。 关了之后 我先来看一下 html 代码, 会发现跟刚才差不多,也是通过提交这个 form 表单之后添加了管理员这样删除, 你打开 可以看到管理员也已经成功的添加了,在前台看一下,发现管理员是成功可以添加的。 这就是 os 的 c s i f test 的 最常用的功能,还是比较简单的。 接下来我们来看一下 c s i f 攻击与其他漏洞的配合。我们这里发现了一个在前台发现了一个叉 s s 漏洞,我们就来通过叉 s s 与 c s i f 来配合,进行一些更高级的攻击方式。 我们用到了一个叉 s s 的 平台,是在网上随便找的, 你找第一个,随便找到一个, 成功了,我们来看一下,我刚才建了一个模块,建了一个项目,打开配置代码,这里就是我们的项目代码,主要是 r j x 提交数据,提交 这个页面提交的数据就是这个跟刚才的封表单提交差不多,来 打开啊,复制这个链接到他的前台,在这边有一个在线留言,我们给管理员留一个言,这边我们页面没有实现, 是把 html 改成 s p 就 可以了,我可以留言的标题是 可以进行一些其他的高级的留言,管理员这边可以这样,管理员有个问题, 有个问题请教一下, 比如说我可以这样把这个叉 s s 的 攻击链接放在这边,就放一个吧, 提交信息提交之后会在这边显示,你到后台可以看一下,管理员到后台看的时候,这边要清楚一下 登录一下, 管理员在登录之后会看一些一些问答的时候会发现有一个这个, 他进行回复的时候,先来看一下有没有管理员,把这个管理员删除,就一个管理员他在 进行问答中心管理的时候,查看有没有人,进行留言的时候,准备回复的时候,你就在这边执行了我们的叉 s s 的 代码, 叉 s s 代码主要就是啊添加一个管理员,配合 c s i f。 添加一个管理员,我们来看一下,可以看到这边已经添加了两个管理员,第一个是在 这边点打开的时候,会在这边读取一下这个链接,然后发现里面有一个叉 s s 通过 cf, 然后添加,管理员添加了一次,然后呢打开的时候又添加了一次,主要是添加了两次 cf 啊,比较高级的利用,就是配合其他的一些漏洞来进行 cf 攻击, 这里我们就演示了通过叉 s s 漏洞来配合 c s f 来进行啊。在留言处 添加管理员,就是后台管理员,在访问留言的时候防不胜防,添加了一个管理员,我们就可以直接通过添加的管理员进行登录。后台如何应对 c s f 攻击? 根据前面讲解的案例和我们对 csrf 原理的介绍中可以看出,要完成一次 csrf 攻击,受害者必须依次完成两个操作,第一个是 登录受信任的网站 a, 并在本地生成了 cookie。 第二个在不登出 a 的 情况下访问了危险网站 b, 那 么我们只要不完成以上操作的任意格,就不会发生 csrf 攻击。 上节课呢,我们通过呃检测和利用生成了一个,在本题生成了一个 h o h t m l 代码,那现在先把它放到远程的网络里面, 就是放到一个 b 的 网站里面, 你可以看到这是阿帕,阿帕奇搭建的网站,这个是小旋风搭建的网站,我们一开始的 a 网站就是小旋风搭建的网站,我们现在通过访问 b 网站的这个 这个页面页面其实也就是提交的那个生成那个后台管理员的代码,我们来看一下。 第一个是登录了受信任网站, 这是网站 a, 我 们在后台登录一下, 我们可以看到我们登录了网站 a, 那 么这个时候突然有个什么好友啊, qq 那 个人谈了一个信息说,你可以访问一下网站 b 吗?我这边好像不能访问,类似于这样的, 他访问了之后教你打开这个链接,点一下,你会发现你就在本地网站 a 上面放了一个一二三的管理员,我们来看一下, 这是一二三的管理员,已经成功添加了,那么就是说我们的这个攻击的 poc 放到了 b 网站, 我们只要在 a 网站登录的情况下,访问 b 网站的这个存在 csrf 攻击代码的 b 网站的页面里面,我们就会在 a 网站里面成功执行我们的 csrf 攻击的代码,就会生成一个一二三的管理员。 接下来事实上你是无法保证以下的情况是不会发生的。呃,在登录了一个网站之后, 不再进行打开另一个网页,或者是说是访问另一个网站,这是限阶段,是基本上是不可能的。 二就是说关闭浏览器之后,本地的 cookie 立即过期。事实上关闭浏览器并不能解说会话啊,因为 cookie 机制的问题,因为有一个长期 cookie 的 机制,比如说你打开继续打开网页的时候,他的 cookie 生效之后可以直接进行访问。 第三个是 b 网站也是一个受信任的,存在漏洞的,经常被人访问的网站, 那么我们这边啊,可以给出几个可行的解决办法。第一个是可以利用 http, watch 之类的监控网页访问的程序,防止库可以被截取。 第二个啊,对于一个网站而言,可以禁用诸多长期授权的办法,或者改用瞬时授权,可以在每个封表单中提供隐藏的 file 的 id 之类的。第三个,我们可以利用双提交 cookie 的 办法,这种方法呢,只适用于阿贾克斯,这里面就是 a s p 点 add 的 技术。如果某个授权的 cookie 在 被 post 之前就被 java script 代码读取的时候,那么限制跨域规则我们就会被应用到。如果服务器需要在 post 请求体或者说 u i o 中包含授授权的 cookie, 那 么这个请求必须来自于受信任的域,因为其他的域是无法从信任的域读取 cookie 的。 这是前三种的解决办法,还有后三种。第四个是使用特殊的浏览器,因为现阶段多窗口浏览器新的打开新的窗口之后会带有当前的绘画,这就带来了安全问题。 这种情况下我们就可以使用一些特殊的浏览器,就是说打开新的窗口并不会带有我们的当前绘画,那么我们就会啊不存在 c s r 的 攻击的。 第五个,由于 c s r f 失效性的问题,可以采用浏览器挥霍结束时自动清理浏览器酷毙的办法,办法不是很好。 第六个是在非 get 请求中使用 security token, 就是 安全性令牌的办法, 就是在封表当中添加一个新的拓根,拓根 id 之类的办法。这些这以上的办法都是可以解决 csr 漏洞的, 但是有些办法还是是可以绕过的。最后感谢大家的收看。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防渗透测试等,共二百七十二集。 声明,此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你,主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 大家好,本节课呢,我们将介绍拨盲注对应的这个解析的这种方法,那么对于盲注来说,咱们如果单纯的使用我们之前所介绍到的这种手工的方式来进行利用,那么并且得到对应数据,那么是非常耗费时间和精力的。 那么此时呢,我们就可以使用脚本啊,这个 python 脚本来加快我们对应的这种测试来获取对应数据。 那我们要使用 python 来进行解析或者是获取数据,那么咱们需要有一定的步骤,这里呢我规范了三个步骤,首先呢,你要找到对应的注入点确定对应注入点确定之后,我们就开始对注入点测试,获取咱们最基本的一种注入利用语句。 之后呢,我们开始替换其中的数字来逐位进行拆解,那么这个工作就交给 python 来自动完成。 那我们对于测试注入点来说,那么咱们可以使用 and 一 等一 and 一 等二,但是呢,由于当前我们对应的这个 web 应用程序过滤掉 and 关键字,那我们使用这样的内容是无法进行探测是否存在词汇注入, 因此呢,我们就需要使用它的一些替代方法,绕过方法,那么在 my circle 当中,我们可以使用两个这个 add 符号来表示对应的这个 add 关键字,那么通过它就可以绕过对应的这过滤。接下来我们做演示,首先呢我们回到浏览器当中, 我们首先输入一个空格 and 一 等一回车会发现它输出 waif, 然后过滤关键字相关的内容, and 一 等于二也是过滤,因为它这个筛选过程中过滤了对应的这个 and, 啊,应该是, 那么过滤 and 之外啊,那咱们想对它进行进一步的这个测试的话,那么此时呢啊,我们应该是过滤的一个等号啊,过滤的一个等号, 那么如果我们这里过滤了 and 的 话,那么我们同样可以使用我们对应的 add 符号,然后比如说 add 符号,然后是一个零的话,回车,那么可以看到输出了一个 success, 如果是一个一的话,也会输出 success, 那么这是由于咱们对应的这个 add 符号会在这里被认为是一个参数,而后边内容会被认为参数相关内容,而并没有真正的执行 sql 语句相关内容。那对于这种情况来说,咱们可以对它进行一个 url 编码,百分号二十六就是我们对应的啊这个 add 符号相关的 u l 编码,那么我们这样一个符号的话,那么要使用两个符号,就使用百分号二十六,百分号二十六之后输入对应这个条件, 那么它在我们对应的这个缩口语句当中相当于我们对应的这个 and, 那 么 and 一 的话,那么永远为真,那么返回正常结果,如果我们 and 的 话,一个零的话,就会返回对应的错误, 那么这种情况我们可以直接在浏览器当中输入我们相关的符号进行测试,百分号二十六,百分号二十六一回车,那么正常输出, 如果是零的话回车,那么可以看到是一个 file, 那 么由此呢,我们就确定我们在正常和不正常或者是错误情况下输出不同的内容,此时我们对应 id 是 可以进行不录入的, 那么当然这过程我们也可以使用 bobsoft 来进行测试,那 bobsoft 同样呢,我们需要对我们对应的这个符号进行 u i 编码,将它编码为百分之二十六,然后得到对应结果进行查看。那么在这里我们也做一个演示,首先截断之后呢,在这里进行一个刷新, 回到我们对应的 bossot 当中。啊,这里我没有开启代理,我应该开启对应的 bossot 代理,之后呢对它进行一个刷新,我们可以看到此时呢解获对应数据包,我们将它发送到 replay 当中。 那么在这里呢,我们可以将对应的这个百分二六替换为之前我们可能错误的这样一个结果,那么可以看到我们此时 这个位置会将它识别为一个对应的参数,那么此时它并没有两个符号进行结合,传入到对应数据库当中。因此呢,我们这个位置就不会被认为 sql 语句相关的这个 and 符号,那么点击 size 的 话,它也不会输出相关的这些内容,只会输出 success。 那么此时要想做对应的利用,就需要对它进行编码,如果你不知道我们 add 符号相关的这个编码的话,那么在这里可以将它拷贝到这里,然后拷扣的,然后 ul, 那 么就是百分号二十六,我们要将它拷贝过来,然后返回到 peta 当中, ctrl v 之后点击对应的就 set, 在 set 之前我们先改为一个一,表示永远为处一个帧,点击 set, 那么此时永远为真返回一个 success。 如果我们传递一个假的条件,也就是零啊,也就是零零代表是一个假,点击 set 的 话肯定是一个假,那么此时呢是一个 file 来验证了我们对应的这个 说法,那么此时就证明 id 是 存在一个不耳注入利用的,我们可以使用不耳注入利用来进行进一步的测试。 那么首先我们要做的啊,就是获取原始的这种利用语句,那么大家可以想我们相关这个 sql 语句。首先呢我们使用一个 select 相关内容,之后呢我们可以使用百分二六,百分二六进行连接,你也可以使用其他逻辑运算符 o o 的 话, 那么表示一个或者那么双方有一个为正确的话,后边内容就不会再进行执行了,因此我们需要把前面内容报错啊,带入一个不存在的值负一,然后通过对应啊正常的这个查询来进行获取。 那么之后呢我们进行对应的判断每一个对应的字母,那么当然我们当前的这个语句当中有很多是存在对应的啊这个防注入或者是对应的过滤,那么此时我们就需要进行进一步的啊这个 筛选啊,或者是绕过,我们需要将空格以及我们在这里啊不能使用 s, u, b, s, t, r, 而要使用对应的这个麦的以及阿萨,阿斯, a, s, k, i, i 这样一个对应的函数也不能使用,使用 o, r, d, 因为它进行过滤,同时呢逗号也不能使用,那么等号也不能使用,那么此时我们就可以使用这种结构来进行对应的绕过,我们接下来做演示,那么 id 啊,首先给他进行一个负值啊,负一, 接下来他对应的是空格啊,空格,那么咱们要对他进行注入的话,那么首先我们其实呢可以回到浏览器当中进行进一步的这个设置,那么还原我们对应的原始搜索注入语句, 那么首先呢要知道 id 传进去,它使用啊对应的这个表,我们 so tables 进行查看,使用 person 这个表进行对应数据查询,那么此时我们就可以进行对应的还原,还原 sql 语句 select person 啊,然后 where 条件 id 等于一,那回车它查询这样一条数据,那我们要想对它进行否利用的话,我们需要使用 and 相关的这个内容,那么当然 and 不 行的话,可以使用 or, 并且可以使用两个这个 and 符号来进行替代, 那么此时我们使用一个 o, 那 么使用 o 的 话,就要将前面内容置为负一,而又不存在值,那么此时后面内容才会进行一个判断,那么只有后面内容为正确的时候,那么咱们最终外语句会返回一个正常的这个数据,比如说返回一个一, 那么此时为真就会查询到对应数据,页面也就会展示对应的 success 这样一个信息,否则的话展示否那我们要想后面这个数据进行对应的判断,那么他要为一个真,那么首先呢我们要判断一下相关的这个表, 那么表明的话,我们可以使用对应的啊这个竹字拆解,那么竹字拆解的话,我们首先要将所有的内容进行一个输出,要将它这个 table 下划线 name 进行获取啊,然后从我们对应的元数据库 information, 然后 scam s, c, h, e, m, a tables where table 下划线 name 啊,在我们啊这里 table s, g, m, s, c, h, e, m, a 等于一个对应的 database, e, a, t, a, b, s, e 等于一个 database, 那 么现在查询对应的这个数据库 当中的这个表明,那表明的话,我们要查询对应的这个数据的话,就由于它返回的并不是一行,因此我们就需要使用 limit 来使用限制的方式输出我们对应的这个数据,比如说零一,那么就从 零位置,也就是第一个位置向后截取一个对应的数据长度。那么与此同时呢,我们还要将对应的这个数据,首先呢我们这样的一个查询会获取我们对应的啊这个 数据表的第一个数据表的名称,也就是我们当前对应的这数据库第一个表的名称获取之后,我们因为是一个逐字拆解,那么此时就要使用到对应的这个卖的或者是 s, u, b, i, t, r 相关的这个函数啊,比如说 s, u, b, s, g, r 那 么我们开始执行这个函数,这个函数的话要查询我们当前获得表明相关的内容,我们此时一逗号,一获取第一个数据,那么与之判断啊,判断的话,首先它是一个字母,我们使用单引号,比如说 a, 那 么直接回车,那么这里他报错误,那我们看一下究竟是什么错误,这里 空格 substrate, 然后接下来是对应的这个 database 啊, limit 这里啊没有问题 database 啊,然后我们看一下啊,对应这个符号 select table name from information schema tables well table schema 等于 database, 那么之后呢,通过 limit 来进行一个第一个啊,这个表明的确定,确定之后,然后这里啊应该是多了一个对应的啊,这括号 回车,那么此时可以看到我们筛选出第一个,表明对应的这个字母等于 a 的 情况下,那么它就会返回一个处,如果它使用另外一个字母 b, 那 么就不会返回对应结果,因为它相当于 v 二零,那么此时它就会 报错,或者说是没有查询到相关的数据,那么就输出 empty set, 表示没有数据, 那么由此呢,咱们就确定我们查询的啊,这个数据库对应的啊,这张第一张表所对应的啊,这个第一制服就是 a, 那 么这样竹字拆解就可以拆解出相关的内容,那么由于我们当前对应的这个数据库呢,是存在对应的这过滤的,那我们也可以给它添加一些内容, 那么会发现它过滤了我们对应的 substring 啊,以及我们对应的这个空格 substring 的 话,我们可以使用 my 的 进行替换,而对应空格的话,可以使用这种注式符的方式来进行绕过, 那么同时也过滤掉相关的逗号,我们需要在 limit 以及我们对应的 my 的 进行一个相关的绕过, 那下面我们开始构造对应的这个批漏的,那么构造批漏的时候,我们可以先在对应的终端当中进行构造,首先进行一个替换, 替换掉 subtree 啊,改为 my 的, 那么此时这个问题解决,那么 subtree 啊已经绕过,然后 well table scanme 啊,然后 database 啊,然后之后呢是对应的这个逗号,逗号的话我们可以使用对应的 limit, 可以 使用 from 啊,这里是一,然后 offset o, f, f, s, e, t, 然后是从零开始,然后偏移一个内容,那么此时我们只需要改变零这个位置即可,那么这是它最终的这个偏移量, 那么之后这里没有对应的逗号,那我们对我们对应的啊这个麦的也进行一个去逗号,首先它是一个 from 一啊 for 一 啊,从一到一,那么此时就是第一个位置,那么第一个位置回车是否等于 a 啊,等于 a, 那 么等于 b 的 话回车,那么可以看到没有对应的结果,那么此时我们就构造了这样一个缩口语句, 那么对于这个缩口语句,我们可以给大家做一个复制,之后呢我们可以对它粘贴到我们相关的啊这个位置, 我们要对 id 相关的这个值进行复制, id 这个值按回车进行复制,之后呢回到 boost 当中, 在这里 ctrl v 啊粘贴进来,那么由于啊空格会进行正常识别,一般情况下你要使用加号或百分号二零,由于我们在正在表达式当中过滤了啊这个反斜杠 s 啊表示对应任意 多个,一个或多个对应的空格都会进行一个对应的报错,因此呢,我们不能使用百分号零或者是对应的加号,我们需要使用注式来进行绕过相关的这个操作,那么此时我们将对应的这些内容,也就是空格都改为这样一个百分号 啊,这个星号相关的这个注视,那么此时就可以进行一个正常的使用四核语句,那么不会出现我们相关的这个 wifi 检测到,或者是脚本检测到,那么此时我们开始逐个修改,修改完成之后我们进行一个访问, 那么在这里啊,我们要一步一步修改 把 limit 这个位置啊,修改之后呢啊, e 这个位置也需要进行一个修改, 当然呢啊,你也可以拿到文本编辑器里啊,直接将空格替换为对应的这个位置也可以,你也可以像我这样手工的输入,可以加深啊相关的印象, 那么现在完成啊,点击 set, 那 么正常情况下 b 是 不等于的,但是这里啊,他输出了相关的这个内容,那么他说我们对应的这个内容的话, 他进行了输出,那么此时他没有绕过对应的这个 waif, 那 么也就是说没有绕过脚本检测,我们再次看他防御内容,有对应的等号,我们这里直接出现了等号,这里也有对应的号,所以说报错了。 那我们想要绕过等号的话,大家可以使用我们之前所介绍到的这个 e 啊,我们可以给他设置 e 啊,然后对应的是括号一定不能少,必须有对应的括号,括号加上,然后我们在 b 这里也要加对应的是括号,然后 e 对应的是括号,然后对应的 a 回车,那么可以看到输出正常内容, b 的 话输出错误内容啊,没有对应的这个提示,或者没有消息啊,没有数据,那在这里我们对它进行修改。 i n 啊,然后这里应该是有一个空格,然后 i n, 然后对应的这空格 之后我们对它加括号,然后到这里括号 之后是一个数字啊,比如说 a, 然后接下来在这里对它加对应的这个空格,然后接下来是一个 e 啊,然后加对应的空格之后一定要加上 database 相关的括号 in, 后边必须有对应的括号,否则会报错, 那么此时啊他报一个错误啊,是一个语法错误,我们可以啊查看对应这个语句, 那么 database 啊,然后接下来 table schema, well, table schema, 然后应我们具体的 limit, 然后我们找一下对应这个错误,他说在 e 的 这个位置应 a, 他 说这个位置是出现错误,我们看一下对应这个错误,然后这里应该是没有问题, 查询到数据,与 a 进行比较,那我们可以啊将它复制出来,直接进行一个拷贝。之后呢我们回到浏览器当中啊,替换相关的这个 id 之后把代理关闭回撤,那么它报错,表示我们在这个位置当中啊存在错误,我们回到这里进行对应的这个查看进行修改, 那我们啊看一下究竟什么什么错误。 from 一 啊 for 一 啊应我们对应的这个 a, a 是 一括号,没问题,字母。在这里 我们将啊对应这个内容进行一个比对吧,直接将我们当前内容啊进行一个拷贝,然后对应的 compare, 然后配色粘贴到这里。之后呢我们在之前也使用过相关的这个内容,我们可以将它拷贝过来, 之后呢我们再对应这个位置啊,点击 paste, 那 么两者进行一个比较,我们可以点击 word 进行比较,那么会发现啊,在这个位置的话,它出现了相关的这个内容。一这个位置 from for, 我们这样进行一个查看。一,然后 o r d 啊,它是进行了一个相关的 o r d 啊这个转换,那么这里我们应该少了一个 o r d 相关的这个内容,那么 o r d 的 话,然后是在一这个位置后边是具有对应内容, 这样的话我们进行一个转换,当然不转换也应该是可以正常运行的,那我们先给他进行一个转换,首先呢卖的之后是一个 o r d o r d, 将它转换为对应的这个二进置,转化为对应的阿萨玛。之后呢在这个位置啊,应该是这个位置 y d 将我们扩起来,内容再给它进行扩起来,之后是硬啊这个操作,那么阿萨姆就说是一个九十七啊,点击下的,那么这样还是会出现对这个语法错误,我们可以将这个内容这个内容直接给他进行一个复制, 复制过来,然后我们再 compare 进行一个比较,那么首先我们将它原幕,将之前的这些内容都原幕配色,然后回到我们这个对应之前测试好的语句,直接给他进行一个复制。 之后呢回到 compare paste, 然后 word 进行比较,会发现在这个位置的话,它是有对应的一个这个符号,其他内容是一致的,我们可以将对应这个符号给它去掉, 关闭,然后有对应这个符号,点击 set, run, 这里应该是没有错误,我们把这条语句给它复制过来,然后回到这个页面当中,给它直接进行一个粘贴, ctrl v, 然后点击 set 编辑, 他说一个错误,好,我们应该是没有问题, ctrl v, 我 们将之前的这个部分复制过来之后粘贴到这个位置,然后点击 set, 那 么可以看到啊,这时候成功了,刚才啊我这个元音的话,我看一下 compare 应该是没有问题的。 word 它俩这个区别的话,就是在最后这个位置它多了这样一个符号啊,它不是不具有这样一个符号,也就是对应的这个冒号,这里这个冒号应该是不影响啊,我们将冒号进行一个去掉,这里啊多了一个空格,直接把这个冒号去掉,点击 set 也是没有问题。如果这里修改了一个其他字赋,点击 set 的 话,它就会是一个 fill, 那 么此时呢就可以构造出原始的这样一个对应的 sql 语句, 那么这个四个语句呢,你需要精心的来进行构造,最后呢根据页面结果来进行一个返回绕过,那么有了这样一个语句的话,那么此时呢大家就可以通过它来编辑相关的这个代码,我们使用 python 来进行编辑。首先呢编辑对应的这个表明的获取, 我们要声明一个对应的差类型,也就是我们对应一个字母串,其中包含着我们相关在数据当中可能出现的一些字母。之后呢要声明一个请求的 url, 也就是存在注点的 url。 之后呢,开始进行对应的这个测试,使用一个负循环,那么我们要测试过程中,首先要获取我们对应的表数据库当中的表可能不止具有一个,因此呢我们要探测两个相关的表,那么当然你也可以修改为更大的一些数字, 探测更多的这个表。之后呢,我们申明一个 table name, 我 们探测的每一个表来说,那么探测完成之后,那么就可以对它进行输出,再次进行探测下一个表的话,你要将之前所使用的这个临时变量置为空,否则的话你就会进行一个错误的显示。 之后呢,我们开始进行对应测试,我默认情况下,假设每一个表的名称要小于等于五十,那么就可以使用一到五十,也就是一到四十九这个范围当中数字来进行对应的设置,也就是有这么长度的啊,这个字缝。 之后呢,我们每次探测要对我们当前差当中的这个所有字母进行探测,因为在我们对应的这个数据当中,或者是任何字母串当中都有可能出现我们这里可显示或者可打印的一些字母。 之后呢开始对我们参数进行设置,那么这个参数就是我们对应提交的 id, id 的 话,我们要精心设置它相关的这个语句,那么这条语句 得来全靠我们对应之前获得的这个原始语句。获得原始语句之后,我们要做对应的修改,首先呢你要修改 offset 这个位置表示我们获取第一个表明,第二个表明,那么零表示,第一个表明 一的话表示第二个表明,因此呢我们在这个位置的循环要替换到我们对应 offset 之后,那么替换之后我们要对对应的这个 表明当中啊字母对应的这个具体位置,也就是表明的第一个字母,第二个字母,那么要从我们对应的 form 后之后添加,那么也就是通过对应的 i 进行追加, 那么每一位的字母究竟是怎样的内容,那么咱们可以使用叉来进行替换,也就是 in 之后的这样一个内容, 那么设置完成之后就可以进行对应测试,在这里呢我没有使用阿萨姆,而是直接使用字母串,实际情况下你需要使用阿萨姆相关的啊这样一个操作, 那么这里由于我没有过滤相关的这个引号,所以说就可以直接使用,如果过滤的话,你需要使用 o, r, d 或者是对应的 a, s, c, i, i 来进行对应测试。之后呢要将阿萨姆转换为对应的字母,就可以获得我们军中数据, 那么此时我们设置完成直接发送,然后如果我们在这个过程他对应的长度是幺七六四的话,那么咱们就拼接我们得到的这个字母,最终呢输出我们对应的表明,那么输出一个表明之后开始第二次循环,那么最终我们输出两个表明, adm 和 pos。 那么对于我们一七六四如何获得,那么这里我们也给大家做一个介绍,我们要将这样内容给它发送到对应出道模块。之后呢,我们对这个位置进行刻列,我们要将零添加一个变量对它进行修改,那么输入一个一啊,输入一个零 and, 然后 start attack, ok, 那 么此时就会发现我们对应这个数据一的话,那么它输出二零二九,那么它代表永为真,那么就输出 size 对 应响应的这个长度,那表明咱们对应的这个条件语句正确, 那么如果是一个错误状态,那么是二零二六,因此呢我们确定正确状态对应的这个数字是二零二九, 因此呢在这里你第一个语句使用 or 进行一个报错,那么 or 在 这里首先使一个负一报错,报错之后,那么后边语句为正确的情况下,那么他就会得到对应的正确长度幺七六四,最终呢输出相关数据库名啊,这个数据库当中的这个表明。 接下来我们做演示,回到我们对应的一当中,我们将这段代码给他解注式,按 ctrl 斜杠, 此时呢我们右键运行,那么这个过程他要进行循环便利,循环便利是需要花费一些时间,我们要加入对应的多现成,所以说你就需要在这里等待即可, 等待它完成之后就会输出我们相关的啊,这个表明,也就是在我们当前对应的这数据库啊, database, 这个数据库,也就是我们最终的 web circle 这个数据库当中所对应的这个前两张的表明,因为我们只便利了零零代表第一张,那么一代表 对应的第二张,那么此时它会输出对应的第二张表明,也就是 pos, 那么这里我们就不再等待,稍后给大家查看相关的结果。现在我们有了对应这个表名,就需要获取对应字段名,同样呢我们要进行对应的原始批漏的的这个获取,或者是原始 circle 注入语句的这个获取。 那接下来我们以 other name 这样一张数据表为例做演示。首先呢我们要将之前的 qlms 替换成 qlms, 然后对应的表也要替换成 qlms, 那么最终它要查询哪一个具体表当中内容要替换为 admi, 之后呢,同样的语句,同样的这个含义,我们要进行对应的这个设置 进行相关替换。首先呢,我们要查询对应的啊这个 limit 之中的内容,也就是查询第一个字段,第二个字段,第三个字段相关内容,那么要查询每一个字段相关的字符,就使用 i 这个变量, 那么最终每一位对应的字母是怎样的内容使用差,那么这样就构成了我们相关的这条语句,同样判断是否等于幺七六四,最终得到我们指定的这个表明 and the mean 当中的字段名, 这时候我们回到代码当中进行查看,我们现在得到了表明 and the mean 和 person, 我 们可以将这段代码给他进行一个注示, 我们将我们这里写的获取字段名称代码解注式,然后右键运行,那么此时他就会获取我们对应指定的啊这个呃的命,这里是呃的命相关表明的这个字段,那么他是在这个缩口语句当中进行指定的, 那么之后呢,他就会输出呃的命当中所具有的这个字段,那稍后呢,我们查看相关的这个结果。 那么对于这些 sql 语句的就获取以及我们对应代码编辑,我就不再详细介绍了,大家应该是可以轻松的掌握,通过之前的学习, 那么有了对应的字段名,表明,我们就可以构造 sql 语句来获取对应的这个值,这里我们给出 sql 语句,同样呢他要进行一个对应的族字拆卷,然后进行一个替换,那么这个替换首先呢要 进行自断啊,相关的第几个自断,那每个自断当中的位,也就是你判断第一个自断当中的第一个位,第二个位,第三个位,那么每个位具体的值使用叉,最终呢就可以得到相关的结果。这里呢我写了一个 获取前十个对应的 password 字段相关的内容,那么可以看到这是字段,这是表明,那我们回到这里进行查看,此时呢会发现我们现在已经输出了对应的啊,两个对应的这个 字段,分别是 id 和 user name, 那 么同时呢我们稍后也会输出对应的 password, 那 么输出 password 之后,我们就可以在这里通过 python 啊这个语句或者是脚本来获取 password 相关的这个数据, 那么我们就不再等待了,它比较慢,我们直接关闭,那么将这段内容给它注视掉,那么接下来获取相关的值,我们此时呢右键运行啊,它确实输出了 password, 那么运行之后,我们就会看到我们前十个相关的啊这个 password 对 应的值。那么首先呢我们要获取多少条记录,那么在这里每条记录包含多少个字母,那么这些字母分别是什么内容?那么这是它的一个逻辑结构, 之后呢对应参数是我们精心构造的这个配漏的原始字串,那么这个配漏的构造要结合我们对应的这个 bose 以及我们浏览器对应的这个显示,同时呢我在实际的这个测试当中,我更喜欢加入一条语句,那么这里我们先输出了第一个对应的这个 load, 获得对应 flag 值,我们先给它中断啊,就不再进行对应运行了,运行下去也会获得对应的值。我们给大家说一下对应这个调试,就是使用对应的 print request u l 将它拷贝出来, 之后呢我们对它进行一个输出, ctrl v 之后右键啊运行,那么进行一个中断关闭, 那此时呢,我们获取对应 u l 值可以拷贝出来,然后呢我们对它进行一个测试啊,这是我们测试过程中使用的一些技巧, 那么测试的话会发现它是一个 fill, 那 么这个语句是正常,没有报错,所以说啊,我们这个构造应该是没问题, 此时呢我们就可以精心的去构造对应的这个每一位是否进行一个正常的这个设置,以及我们对应逻辑是否正常。而对于我们对应这个语句啊,应该是可以语法正常的一个检测啊,在这里通过它输出我们请求的 url 来完成检测的效果, 那么此时我们将它注视掉,获取到我们刚才类似于 flag 相关内容,大家就可以提交,然后获得对应的这个分数, 那么下面呢,我们进行一个小结。首先呢大家要理解我们 python 如何实现自动化,布尔的这个注入我们分为三个步骤,首先呢你要确定注入点哪一个参数是存在注入点的话, 然后进行注入点的测试,最终呢要通过测试绕过我们对它过滤,找到替换的方案,构造出原始注入利用的这个语句,之后呢就是一个 python 自动化便利的一个操作。 那么通过啊,我们本章节的学习呢,大家要深入理解布尔注入的这个原理,那么同时也能编写出我们布尔注入利用的这些代码。那咱们本节课关于布尔芒住 ctf 解析的这个方法先介绍到这里,再见。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防渗透测试等共二百七十二集。 声明,此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你,主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 大家好,本节课呢,我们将介绍布尔芒住过程中对应的过滤以及绕过技巧, 那我们要想绕过对应的这种过滤来说,我们最主要的核心就是将关键字进行一种替换,使得我们过滤机制当中没有过滤关键字,可以实现过滤关键字的一个作用,从而利用对应的这种注入获取相关的数据。 这里我们给出一条括号,有对应的单引号以及我们对应的逗号, 那么这些内容其实呢都可以进行一种同意的转换,使得它不出现对应的 circle 语句当中,从而如果说你过滤了 id, 那 么我使用其他的一些函数来进行代替卖的也是可以, 那么这里的单引号可以替换为十六进置,同时我们对应的这个逗号也可以进行一种修改。 那么我们接下来介绍技巧不仅仅只适用于布尔芒住,也适用于其他类型的这种住利用方式。但是呢,我们在布尔芒住当中以及我们后边介绍的原始芒住当中使用的更多一些。 那么首先介绍的第一个技巧就是过滤逗号的这种绕过。在咱们进行蒙住的过程当中,咱们要使用 suv, i, t, r 以及麦的相关的字母串截取函数以及 limit 啊,这个限制条件的一种设置, 可以通过它来截取我们对应的这个数据或者是记录,那我们无论是使用对应的这个数据或者是记录,那我们都需要使用到对应的逗号, 那么如果我们对逗号进行一种过滤的话,那么逗号如果出现,我们就确认它是一个搜索注入,而不执行对应的搜索语句,直接进行退出,那么从而防御搜索注入, 那么正常情况下,咱们过滤逗号之后,那么咱们这些语句都是无法进行一个正常执行的,那如果我们想绕过对应的这个字母串截取函数的这种逗号的过滤,大家就可以等价于我们另外一种方式返回, 那么通过它就可以使得我们查询截取对应的这个字母串。接下来我们做演示,回到这里之后,我们 select 或者直接卖的吧, m i d, 然后对应的啊,这个艾德命啊,比如说艾德命,艾德命,然后接下来 e 逗号 e 直接执行啊,他报错,我们使用 c l a 语句 c l a 回车,那么此时呢他就会截取第一个字母开始,也就是 e 向后截取一个,那么刚好是截取到 a, 那么如果想截取第二个位置,那么输二回车,从二开始截取一个字母,那么就截取第二个字母 d, 那 么以此类推,我们修改这个位置对应的这个数字,就可以截取到而的命相关的啊,整个对应的啊字母串当中的内容, 那么如果过滤逗号,那么此时他是无法使用,大家就可以使用替换这种方式方法,那么我们可以输入起始位置, 然后对应的长度回车,那么可以看到它实现了与逗号连接的一一这样一个效果,方一负一,那么这样就达到了不使用逗号的一种效果, 那么我们同样的 suv 纯啊也可以实现这样一个功能,我们在这里也给大家做演示,我们使用 see that suv, 也就是啊子串啊 s t r 之后呢,我们一个字母串 i 的 命,然后从一开始截一个,那么截到 a, 那 么如果不能使用逗号,我们就将对应的这个逗号改为 from 一 啊,然后 for 一 回车,那么这样也可以截取相关的这个字串,那么你就可以修改这个数字来扩展它一位,然后一个字母一个字母的往出截,那么这样就不使用对应的逗号。 我们说过 limit 也需要使用到对应的逗号,那么正常情况下,咱们直接进行查询 limit 一 逗号一进行查看,首先呢我们使用 select 星,而 from add me 回车进行查询,所有数据可以看到,此时就可以查询到所有内容, 如果说我们加一个 limit, 零逗号一回车,请查看,此时呢他就会筛选出第一条对应的这个数据记录,那么此时对他进行输出,那么零代表的是开始,一代表的是长度,那么最终截取的是 第一个位置,开始也就是截取第一条记录,那么如果想截取第二条记录,直接在这里写一,然后向后截一个,就是第二个位置,那么输出第二条记录,在这里是第二条记录啊,没问题, id 等于十三。 那么如果逗号被过滤了,那咱们就可以使用它的替换方式,直接将 limit 一, 然后 o f, f, s, e t set, 那么这样的话就会截取我们对应同样的 limit 一, 逗号一,然后这样的一个结果,那么这样就实现了咱们不使用逗号的一个效果。 那么以上呢是咱们关于逗号过滤的一个绕过技巧,那么接下来我们介绍另外一个比较常用的技巧,就是如果我们对应的比较运算符被过滤了,我们又该如何进行操作? 那么要注意,我们在进行布尔注入过程中,经常要使用到大于小于相关的这些比较运算符,如果这些比较运算符进行了过滤,我们又该如何进行?要过,那么首先介绍第一个参数,这个函数就是 great test, 那么这样一个函数,他要传递相关的这个数据,那比如说传入 n 一, 然后逗号 n 二,然后逗号 n 三,可以传递很多对应的这个参数,那么对于这个参数当中,他就会进行一个比较,比较,我们对应这个数字大小,最终呢他会返回一个 这个数据当中最大的这样一个值,那么例如我们在这里给一条语句,然后阿萨玛,然后是一个数字,那么截取 user name 这个字母串相关的啊,这个数字啊,第一个字母, 然后转换为阿萨码,然后与一比大小,那么此时就可以返回对应的啊,这个阿萨码,也就是我们对应第一个字母的阿萨码,与我们对应的九十七进行对应的这个比较,接下来我们做演示,那么首先呢我们使用 对应的啊这条语句,首先我们使用 select great es, 那 么它传递一二三,那么看一下返回具体内容,返回三啊,没有问题。那么接下来我们开始在这里使用一个特别小的这样一个数字,那么之后呢使用 a, s, c 二二,然后是阿萨玛, 那么你可以使用 o, r, d 进行一个替换,或者直接 a, s, c, i, i 二四二码,之后呢使用 suburb street, 比如说我们现在通过搜索语句查询到 admi 啊这样一个内容,之后呢用于截取,那么截取,如果正常情况下,你直接这样来截取啊,即可 注册,那么此时呢它就会输出相关的啊这个 admi 第一个字母,也就是 a 相关的 admi 码, 那么阿萨玛是九十七,他要与一比大小要大于一,此时呢他就会返回九十七,此时就可以与对应的这个位置进行对应的这个比较。由于他过滤了相关的大鱼和小鱼,那么我们就通过 grid test 就 可以对他进行个比较,比较他是否与一 这个大或者是小。那么当然我们一般情况下使用一个比较小的内容,然后在这里就可以进行一个比较,比如说等于号九十七回车,那么就输出了一个一,表明咱们正确,那么咱们就明白我们当前对应的这个字母串,第一个字母对应的阿拉斯拉码就是九十七, 那么通过 trigtest 也进行了一个比较,那么当然我们也可以使用例数啊这样一个函数,它可以返回我们对应的这个最小的一个值。我们在这里也做演示, select 啊,当然我们在这里也给大家说,也可以结合之前的这个内容啊,直接 from 一 否一啊,不使用逗号,那么当然这个位置还使用了逗号,可能这个位置时候啊,如果过滤逗号,我们就考虑使用其他相关的这个比较函数了,那么我们还有对应的 list, l, e, a, s, t, 然后接下来一二,三 回车,那么我们使用一个 select 语句回车,那么此时呢,它就会输出我们对应传递参数当中最小的一个值, 那么当然我们也可以使用 s 加 c, m, p, 那 么它是用于字母串比较的一个函数,可以传递两个字母串,如果我们对应的字母串相同的情况下,就返回我们对应的啊这样一个内容, 如果不相同的话,返回另外一个内容,当然它也进行了一个比大小,如果第一个参数小于第二个的话,则返回负一。如果第一个参数大于第二个参数的话,会返回对应的一。我们在这里做演示,使用 select 语句, i, t, r, c, m, p, 然后接下来第一个字母串,阿德命。 接下来第二个字母串,如果他俩相等进行查看,那么他会返回零,也就是返回零啊,这里是返回对应的这个零。如果说第一个参数,那么在这里 我给大家改一下,如果是一,然后二不撤,那么他会返回负一,因为第一个参数是小于,第二个参数是会返回一。如果第一个参数等于第二个参数是返回相关的零, 大家要记住,大于的话返回一,小于的话返回负一,等于的话返回零,这样就可以记住相关的这个内容。 那么当然我们也可以使用对应的这个应来进行表示,进行替换我们比较大小的这种操作,那么应的话可以指定具体的这个字母,例如我们查询对应的子串啊, 截取相关字母串,然后通过 e 来进行比较,我们截取到这个字母是否是一个 t, 我 们在这里做演示,首先 s u b i t r, 那 么我们输入一个 adm, 然后接下来 from e 啊, for e 与我们对应的这个 a 比较不撤,那么他说这样一个错误, 我们使用 select 语句进行查询,可以看到输出相关的一,那么如果我们对应的这个位置输入一个 b 的 话,输出零,如果输一个 c 的 话,输出相关的零,可以看到如果在其中的话,那么我们第一个字母等于 a 的 话,那么就会输出一,如果不等于相关的其他内容的话,就会输出对应的零,也可以做一个大小的比较。当然呢,我们还有一个 这个比较的这个操作,就是 between a and b, 那 么表示我们对应查询的这个字母是否在相关的某个范围之内。接下来我们做演示,回到这里,首先 select 语句,然后 submit, 或者我们使用 my 的 吧, 然后使对应的默认啊这样个字母串,然后不使用逗号一 for 一 啊,第一个字母是否啊? b t w e, n between, 然后对应的啊,这个 b and c 是 否在 b 和 c 啊之间回车,那么输出零表示不在,如果这里我们将 b 输出 a, 然后回车,那么在 a 到 b 之间,那么输出一啊,因为我们第一个字母的确是 a, 所以 说它会输出一, 那么这样就可以确定我们对应的这个范围,那么接下来我们给大家做一个实验,完成我们题目过滤的这种绕过,这里我给出一个简单的表达式,我们也给大家做一个解析。首先呢这是一个正则表达式, 要对我们传递的这个缩口语句进行一个判断,那么首先他对应的正则表达式是忽略大小写,因此你就不要考虑 通过大小写来进行绕过,并且使用 program 的 话也不能使用双写绕过,那么你就需要直接考虑到我们要对关键字进行一种替换, unit 无法使用联合查询无法进行正常使用 and 被过滤了,那么我们就可以使用其他的这种逻辑算法, dashmark 啊,以及我们阿斯艾玛,阿斯艾玛的话就可以使用 o r d dashmark 是 我们后面介绍的原始芒柱以及 substream 啊,那么我们对应的 substream 过滤就可以使用它的替换 mind 逗号被过滤了,那我们就可以使用这里介绍的这个 mind 啊, from for 或者是 subtree, from for 以及 limit 的 话和 upset 进行一个结合,那么就不使用对应的逗号。对于大于小于相关内容和等于内容,就可以使用我们这里介绍过的这种对应的 between and in 等等一些操作。 那么如果过滤了这空格的话,那我们在搜索语句当中,其实呢就可以使用注视符来进行分割,注视符就相当于一个空格,但是呢他不作为空格处理,可以分割不同的这个部分, 那么这样的话就达到了一些过滤的效果,对于我们正常情况下来进行对你这个操作, 那我们知道我们要替换相关的内容,那么首先呢,我们就要看它究竟过滤掉哪些对应的是关键字。首先呢,我们确定过滤关键字,打开浏览器 之后呢,我们进行一个劫包啊,在这里打开 bobsot, 开始抓包之后呢,我们进行一个刷新,回到 bobsot 当中啊,这里没开启对应的阶段,开启阶段之后刷新, 那么回到 bobsolution 当中之后呢,将 bobsolution 当中截获的这数据包进行一个 repeat 的 这个发送啊,发送到 repeat 当中之后呢,我们在这里进行一个单引号, 点击 set, 点击 red 渲染一下,看一下究竟怎样一个内容它会报错,那么应该是一个对应的这个数字的注入,那么我们就可以使用相关的空格,然后再加对应的 unit 来尝试一下点击 set, 那 么此时呢,它并没有输出我们对应的啊这个数据,而是输出了一个 waft, 当中它会表示我们过滤哪些内容啊?比如说等号 like, r, e, g, e, s, 以及 sleep 白云 mark 以及 subtree 啊 union, 以及我们对应的 s 加表示对应的这个空格回车等等。 time 键 group, user 以及报错注入相关内容。 那么对于这种情况,我们就需要进行不使用过滤关键字 union 啊过滤了,那我们考虑布尔芒住,那布尔芒住的话,它过滤了对应的这个 and, 我 们来看一下是否过滤 and, 我在这里仿佛没过滤 and, 如果过滤 and 的 话,那么我们可以使用 or 来进行一个连接,我们将第一个位置报错,然后接下来我们 or 进行判断,下一条语句, or 的 话,我们开始追加一个一点击 set, 那么我们查看一下他为什么会报错,由于我们这里应该是过滤空格,那么使用加号表示空格也会输出啊,报错,那我们使用这样一个符号,也就是我们 mac 框当中注示符进行过滤,点击 set, 那么此时 success 啊,表示执行成功,接下来就可以在这些位置啊这个位置进行思考。语句的这个编写,我们首先呢来编写一个查询数据库长度的啊,这样一个对应的这个语句, 首先我们 subtree 啊,这里是 list 啊,直接使用 list, 然后 database, database 的 话, 我们使用 database, 然后使进行一个判断,判断的话,我们使用大于是否大于七吧,直接映哎这个 sad, 那 么会发现它过滤了大于等于小于相关的这些符号, 那接下来我们其实呢就可以使用之前我们介绍过的这个 in 啊这个操作,那么对它进行操作,首先我们将它进行分割,因为要使用空格来分割不同的关键字,那么 in 我 们具体数字啊,比如说五,点击 set, 那么 feel, 然后扩大六,然后 set, 然后在这里我们再使用七,点击 set, 那 么最终呢会发现我们数据库长度是七,接下来我们就可以来进行对应的数据库名称的一个获取,我们使用 select 语句, 当然啊,我们在使用 clyad 的 语句啊,要进行一个判断,那么由于我们在对应这个位置啊,我们先写一个这个 subtree 啊,看一下过滤的这关键字 set, 那 么我们将这段内容我们进行查看,会发现它过滤了 subtree 啊,我们就要使用对应的啊这个 id 啊进行替换,如果是一个 id 的 话,然后在这里啊,我们还需要注意它过滤了逗号啊,逗号在这里等号过滤,然后 id 的 话,我们就要查询数据库相关内容啊 from, 首先进行截断 form 一 啊,然后这里是加号一啊,然后加号 for 一, 查询第一个字母之后呢,我们查询的啊这个语句,这里对应的这个空格,要使用对应的注式来进行分割,否则的话也会触发我们对应的这个匹配, 我们现在设置完成,然后在这里要增加对应的这个空格 from for form 一 for 这样一个内容。之后呢,我们在这里要查询数据库的名称,我们就要使用到 select 语句,然后接下来是对应的这个空格 select 语句,然后查询什么呢?查询一个 对应的啊 table name 吧啊,不应该查询数据库名称,我们因为有了这个 database 这个函数可以用的话,直接就可以使用到数据库名称,就不需要查询,要查询对应的数据表的名称 table name, 然后接下来是一个 from 一个具体的 这样一个啊,这个路径 information 啊,数据库名称啊, information 下划线 scanner s c, h e m a 点 tables, 那 么从当前 tables 这个表当中查询 table name, 那 我们查询 table name 的 话, 首先呢,我们要知道 a table name 它并不只具有一个,那么此时你就要使用 limit 来进行一个截获啊分段,那么我们在这里可以使用对应的啊,这个 limit 的 话是一个,我们看一下啊,对应的这个笔记是我们对应的这个 offset 进行组合,那么接下来我们使用对应的一,然后 空格,然后 o, f, f set, 接下来我们依然是空格一,那么当然你可以输入对应这个零, 那么现在输入完全之后, offset 一 啊在这里,那么查询啊,然后它的这个 mid 是 在这里, 之后呢,我们要进行判断啊,判断它相关的数据,那么会发现我们对应的等号已经进行了过滤,我们就可以使用 in 进行一个替换,替换的话,我们 可以看到啊,这时候没过滤引号,那我们直接使用引号啊即可,当然呢,我们一般情况下是引号会过滤的,那么此时呢,我们就可以使用阿萨码来进行替换,比如说九十七, 那么之后呢,我们要将麦的相关的啊,这个位置要加上对应的 o, r, d, 那 么由于阿萨姆相关这个字母这个函数被过滤,那么使用 o, r, d 进行一个替换,那么 o, r, d, 然后是否在九十七当中包含之前对应内容啊,点击 set, 那么我们看 read 啊,等于一个 feel, 那 么如果当它正确的话,就应该是一个啊,对应的啊这个 success, 那 么在这里我们对应这个表 a 啊,就是七,点击 set, 那 么这是一个 feel, 可以 看到这个语句啊,查询是没有问题啊,都正确的进行一个执行,如果直接点击 set 的 话,我们进行查看, 那么如果直接点击 set, 那 么直接短路了,那么应该对第一个位置进行一个报错,这是 o 使用的情况,否则的话他就一直进行一个正常,那么点击 set, 那 么在这里呢,我们可以将这条语句给它复制出来,然后进行一个拷贝,拷贝的话我们回到这个数据库当中进行执行,然后在这里右键编辑,然后粘贴啊,他没有粘贴进来, 那么 table name, 我 们 so tables 回车,那么 a, 然后就是 let me form 一 for 一, 那么 a 的 话,我们查看一下小葵工具来给对应的这个 a 啊进行一个转换,给我转,然后应该是九十七, 我们 d 的 话给我转,应该是一百,然后 p 的 话给我转,应该是幺幺二,我们这里啊是幺幺二,点击 set fill 一 百, set 九十七,九十七 set, 那 我们看一下啊,对应这个语句 limit 这个 information tables, 然后 limit 零,然后一,然后 from 一 或一, 从第一个位置开始截取,然后这是 my 的 对应的这个函数,然后 o r d 啊进行对应的设置, 那么应该是可以进行一个正常的这个查询,如果查询正确的话,就可以返回一个处,我们在这里啊给大家做演示,首先啊,我们将之前这个语句啊重新编写下,首先 o r d, 然后对应到这个麦的,麦的话,之后 say that。 对应的这个 table name from information 这个 id 的 话是否等于一个九十七或者音一个九十七,九十七,之后是 from information scam s c, h e, m a 点 tables, 那 么从我们这个数据库当中表进行查询啊, limit 零,逗号一, 之后 o r d 是 对应的一逗号一,直接回车进行查询,他报错, o r d 是 一个错误, o r d, o r d 卖的,卖的话是这样一个内容,一个两个,然后一个两个没问题, select 是 这条语句, limit select 语句啊,这里应该是看一下啊,应该是多了一个括号, select 语句应该不应该闭合啊,这里 limit 一 得一 select 语句。 好,我们这样这样来给大家做,这样的话比较混乱啊,我们直接粘贴,然后回车,那么它会输出相关的这个数据, table name for information tables limit 零逗号一, table name, 这是查询对应的这个 table name, 然后 limit 零逗号一会查询第一个数据库表明 之后呢,我们使用对应的这个麦的来截取相关的这个字母,麦的之后我们把 limit 给它进行一个扩起来,将这样的位置给它扩起来, 再扩,然后使用一逗号一,然后之后呢,我们将对应的这个数据位置给它也扩起来,之后回车,那么它在这里报错, 然后我们这是一条语句啊,这里少了一个逗号回车,那么我们再看 select 语句, limit 零逗号一,然后括起来,然后接下来逗号一, 我们使用一个 select 语句啊,进行查询 select 语句注册,那么此时会得到第一个字母啊,是 c, 那 么如果我们使用对应的这个 o r d 进行对应的设置,我们可以在这里 o r d, o r d 的 话, 我们给他括起来回车,那么得到六十七,六十七的话,与我们对应的这个六十七进行比较,回返回对应的一啊,刚才我们应该是一个对应语句的这个错误,首先进行一个查询, table name limit 查询对应这个表明 information 啊,这个 tables, 那 么在这里啊,我们改为这个内容啊,就给大家做一个演示吧,直接啊改为一个六十七啊,点击 set, 那 么在这里啊,依然是返回一个 fill, 我 们进行一个查看 select, o, r, d, 然后麦的这里没有问题,进行一些替换,也应该是没有问题。 select 语句,那我们啊进行一个拼接,直接使用 select 星啊, from person, where id 等于一,然后 or 一个对应的内容,那么首先给它设置一个负一回车, 那么此时呢,它会查询出相关的这个数据,等于负一等于负一,然后使用 o, r, d 进行查询 报语句回车,那么在这里查询出所有这个语句,那么应该是它是一个真的情况下,才会查询出所有的这个语句,如果是一个九十七的话,那么它是不正确,所以说没有查询对应的数据, 我们进行一个查看, select table name from information tables, 然后应该是一个 where 啊,要加一个数据库,我们这里要加一个数据库 where table 下划线,对应的这个 s, c, h, e, m, a, 等于啊相关的这个信息啊,比如说 web 下划线 circle, 或者是你直接使用 datebase 直接接 a, s, e 这样函数回车, 那么由于他等于九十七,所以说会输出。如果使用一个九十八回车,那么此时他第一个 对应的这个字母啊,不等于对应的这个 a 啊,所以说我们会不会进行一个输出,如果等于的话就会输出,因为他这里相当于一个一的操作,二一的话就会输出所有数据,那么此时就会报一个正常的语句,我们回到这里 from 啊 for, 然后 tables, 然后在这里少加了一个 well 语句,要加一个 well 语句空格,然后 well, 然后再来空格 table 切换线, s, c, h, e, s, c, h e, m a 等于一个具体的数据,是否 in, 在 这里我们因为等号已经过滤啊,所以使用 in, 我 们这样内容是否在这样一个位置, 是否等于一个 database? d, a, t, a, b, i s e, 然后点击 set 进行一个发送,进行查看,这是一个 fill, 如果改为一个九十七,点击 set, 那么依然是一个 feel, 我 们看这条语句,那么首先 my 的 啊,这里是没有问题,然后 form for 音,然后 table name, table scammer, 然后在我们对应的数据库当中,我们在这里也可以给大家做演示, 那么 database 没有等号,我们使用 e 来进行表示,是否在这样一个环境当中,那么 e, 然后在这里加括号 泊车,那么它是不存在这样的内容。我们使用对应的这个 itr 进行转换,看是否可以进行正常的这输出,它说 web circle itr does not exist, 表示不能使用这样一个转换。 那么如果正常情况下是直接使用等号泊车,那过滤掉等号之后,我们又该如何进行一个操作? 那么在这里我们给大家查看,等号不能使用啊,我们在这里啊等号一,如果这里使用等号的话,点击 set 会发生啊这个错误,那我们要替换对应的等号,我们就需要使用到其他的一些内容, 比如说 are like, 那 么 like 会过滤掉,所说不能使用,以及这个对应的 r, e, g, e, s, p 啊,也会过滤掉, 那对于本号的这个过滤啊,这个绕过的话,我们先暂停一下, ok, 咱们现在回来啊,我在这里测试啊,是没有问题,那么我们对应的数据库呢,也是没有问题,但是我这里空格呢啊,没有进行替换,大家可以做一个对应的替换,同时呢,我使用了对应的逗号, 那么你可以做替换,比如说 limit 在 这里对应的 from 零啊,然后 for 一, 然后接下来是我们对应的啊,这里不是这个 limit 的 话,应该是 对应的零 offset o f s e t 啊,然后一,然后在这里啊,然后是 from 一, 然后是 for 一 回车,那么此时呢啊,它会报一个错误, 我们是进行正常替换,但是它报错误,那我们对这个位置进行一个修改, 那我们给他改回去啊,进行对应的这个查看,首先是一逗号一,然后这里我们首先是修改这个位置,进行排查。回车,那么此时他没有输出任何数据,那么如果是一个一的话,那么他也没有输出任何数据, 那我们啊,在这里修改对应的两个位置回车,他也没有输出数据,那么应该是我们当前这个版本的话, my circle 版本是无法使用对应的这样一个条件,那么应该是我对应的这个环境的一个问题,那么我们在这里把它改回去 limit, 然后逗号零一,然后在这里 from 一 啊 for 一 回车,那么这里也报对你的错误, 我们给他改回去啊,彻底改回去,在这里一逗号一,这里一逗号一, 然后如果把它去掉,应该是 from 一 for 一 回车,正常输出,如果 limit 的 话从零开始零,然后对应的这个 o f f s e t 一 回车,那么他没有查询对应的数据, 那么我们 o f f e t, 然后从一开始,那么此时也没有查询相关数据, 那么我们在这里给他设置零逗号一是可以查询到相关的啊这个数据, 当然呢啊,我们使用 select 星啊, from admin where, 这里直接正常查询,查询所有数据啊, limit limit 零逗号一,查询第一条数据,然后改为零 o f, f, s, e, t 回车,那么此时呢,没有查出对你这个数据,如果我们修改一下,比如说一 of set, 一 啊是可以查询相关数据,那么在这里啊,我们给他零,然后偏移两个内容进行查看, 依然没有数据,那么从一啊偏一两个数据,那么从一偏一个数据,从一啊偏一个数据,那么这样进行一个查询,那么回到之前的这个语句当中, upset 应该从一开始啊,偏一零个位置,就是我们第一条数据,就可以进行一个正常查询,因为第一条数据的话,它是 这个表明的话是呃的命啊,然后就可以查询出来,那么这个位置一定要注意,它是从一,也就是第一条数据从一开始,那不偏移的话,偏移零就会输出相关内容,那我们对之前的这个语句进行修改,那首先等号呢?要修改为一个 in database, 然后 offset 啊,这里要做修改, 对应的 limit 一, 然后对应的这个零,接下来点击 set 进行发送,此时呢应该就输出 success 啊,没有问题,这就是我们最终拿到对应的啊,第一个对应的这个 表明的这个字母就是对应的九十七,阿萨玛所对应的这字母就是 a, 那 么当然你可以使用我们之前介绍过工具啊,进行转换,在这里输入九十七,然后单个还原,就可以还原出相关的这个内容, 那么以此类推,我们使用这样一条语句,就可以逐步拆解出对应的这个表明,然后替换表明相关内容,就可以猜出对应列名,最终得到相关的数据。那么大家最开始的这个过程是需要得到这样一条语句,然后进行修改即可。 那么下面呢,咱们进行一个总结。那么完成这个实验啊,是非常耗时的话,那么大家需要坚持完成手工这种注入,那么你完成一次,那么可能后期你对这个印象更深啊,并且也可以进行扩展。 那么对于绕过来说,你核心要掌握的就是我们同意的一个转换,使得一种关键字来实现我们对应的这个用法, 那么当然我们介绍的这个绕过技巧可能适用于其他的啊,这个注入利用过程,那么大家可以直接来进行使用,那咱们关于布尔芒住过程中经常使用到的一些绕过技巧,先介绍到这里,再见。

本视频耗时五个月,共计三十小时,三十八分钟,零基础自学黑客从入门到入狱,全套教学视频包括工具安装与使用、黑客攻防、渗透测试等,共三百六十八集。此视频内容敏感,很可能被下架,建议先收藏再观看。声明,此教程仅供学习, 禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你。主流的网络攻击和防御的技术都讲得清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 这节课我们学习用 python 代码来实现暴力破解,暴力破解的本质我们前面已经掌握了,它有三个要素,第一个叫做连续性的尝试,一直到猜中为止。第二个呢,要基于字典, 要有侧重的去猜,而不是盲目的猜。第三个必须是自动化的,不应该是人手工输入的,所,所以我们需要去利用代码或者工具。那么现在字典我们已经准备好了,我们准备了有 三千五百三十八个密码的这样的一个密码字典。接下来就是我们把理论变成实践的一个过程。那么首先我们需要去找到一个登录的界面,最简单的就可以,那我们知道登录的原理是什么样的呢? 当我们在前端输入用户名和密码以后,它会发送到后端,后端代码会去查找数据库匹配,如果有的话,那就登录成功了。 那么我们这里用的是一个什什么样的登录的界面呢?我们用的是一个 d v w a 的 靶场,那么这个靶场的部署比较简单啊,大家可以从 github 去下载原码,修改一下你的数据库的配置, 然后部署在 php study 里面就 ok 了。那么具体它它的源码哪里下载?怎么样去安装?我们在前面的叉 s s 漏洞的课程里面已经给大家上传了相关的资料了啊,大家可以去看一下我们在课程里面 不再重复安装的过程。那么这里我们先要登录进去才能使用它的密码暴力破解的场景,这里我还是跟同学们讲一下啊,注意我们暴力破解的不是这个登录的地址,而是登录进去以后它的一个密码暴力破解的场景啊。 所以我们现在输入用户名和密码,密码默认是 password 啊,默认 password 好 登录进来了。我们使用的是这个啊,叫做 brute force, 就是 暴力拆解的这个场景,而不是外面的那个登录框。如果你去暴力破解外面的那个登录框的话,看你怎么样都不可能 爆破成功的啊。然后前前面我们也讲过了,它的安全级别呢,有四个 low 是 没有任何安全防护措施的, medium 呢,是有一个不好的安全防护措施 high, 它又提升了一点点,但是呢依然可以被破解。最后一种是 impossible, 彻底解决了这个问题,那我们要去练习的话,当然还是从这个最低的 low 级别开始, ok, 那 么这里也是一个登录的界面,他使用的用户名和密码呢,也是 d v w 的 这个库里面的 users 表里面的内容 ok, 也就是说他跟外面的那个登录界面用用的数据库表示同一套,那所以我们可以来看一下啊,比如我因为我知道这个 id 命的密码, 所以我输入 password, 我 来看一下它如果登录成功的话,它是一个什么样的提示,它这里呢,会有一个 welcome to the password protected area admin, 然后有一个这个图片,对吧?啊?如果说我输入的用户名和密码不匹配,比如我现在随便输入, 它会有一个什么样的提示呢?它会提示 username or and or password incorrect。 啊,你的用户名或者密码里面至少有一个是错了,或者它们两个不匹配,所以这个关键的特征我们必须要掌握。也就是说,如果等会儿我要去判断我到底有没有登录成功的话,我就是会根据 它的 http 响应结果里面有没有这么一串对应的字母,是吧?我们登录它只有两种结果,要么就是登录成功,要么就是登录失败,所以 ok, 要么就是 welcome, 要么就是这个 incorrect。 当然我们还是先从这个简单一点的场景入手啊。有一种情况是,我现在只有一个登录框,我既不知道他的用户名,也不知道他的密码,那这两个字段我们都要去猜测。我们先从假设我已经知道了他有一个用户名叫做 admin, 我 只是不知道他的密码, 这个时候我怎么样去裁剪?后面我们再说一下,如果说用户名和密码我都不知道的情况下,我怎么怎么去对两个字段同时进行暴力裁剪。现在我们的字典已经准备好了,我们接下来就要去写代码。写代码的话呢, 其实我们这里虽然用的是 python 代码,但是他对编程的语言是没有任何的限制的,你擅长什么样的语言,就可以用什么样的语言去实现,比如说用 c 语言或者加法或者 go 也都是可以的。那我们的思路是什么样的呢?我们先把思路理一下。首先第一个当然是我要 用 python 代码去从文件读取这里面的密码的值,一个一个的值。然后呢,我会发起一个 http 的 请求,访问到它的这个登录访问的后端地址,那我怎么知道它的地址呢?比如我现在随便输入一个,输入一个密码 f 十二, 然后我打开这个网络的选项卡 log in。 好, 我看一下啊,它请求的地址是哪一个?拉上来, ok, 我 们看到它是一个 get 的 请求,请求的地址是这个,对吧?所以呢,第二步我要去发起 http 请,请求的地址就是这个。那我的 很显然其他的所有的内容都是固定的,而我唯一需要去替换的就是这个密码的值,对不对?这个密码的值就来自于我们前面读取到的文件里面的一个一个的条目。第三个 我的请求已经发送了,我怎么知道我密码猜对了还是猜错了呢?这个时候我们需要去获得 http 的 响应,并且对它的结果进行分析。 分析怎么样去分析?我们前面已经讲了啊,登录只有成功或失败两种结果,那么要么就是 welcome, 要么就是 incorrect, 只要我找到了对应的这个提示的字母,我就知道了结果了,是吧?如果没有猜对的话,那我得继续 尝试下一个密码,如果猜对了,就是就没有出现这个东西,或者说出现了 welcome 的 话,那我的 密码裁剪成功了,我的这一次裁剪呢,就要结束了啊。 ok, 这个思路还是非常的简单,也比较的清晰的啊,那我们一步一步的来实现。首先第一个,当然我们要用 python 去读取一个文本文件的里面的一个一个的值,那怎么去做呢? 这里非常的简单啊,这个代码我们也不在课堂上面一行一行的敲了,直接给大家看一下,我们只要用 python 里面的一个 open 的 函数就可以了。打开 同目录下面的我,我把这个代码和密码的字典放在了同一个目录下面,如果不在同一个目录,你当然需要去指定它的全路径啊,绝对的路径啊。 open 打开它,那这个时候它就会读到一个列表,那么怎么去把这个列表里面的这个 list 里面的值一条一条的输出出来呢?我们只要用一个 for 循环就可以了。 for, 然后把这个里面 list 列表里面的一行一行的内容啊都拿到, 然后 print 输出出来,好,最后关闭文件流。 ok, 那 现在我们来跑一下这个代码,还是非常的简单的, 打开一个 c m, d, e, r, 当然大家也可以用 c m d 啊,这个是我自己在电脑上面装的一个,因为 c m d 呢,它使用起来没那么方便,我特地在 windows 环境里面装了一个 c, m, d, e, r, 那 我们来跑一下,叫做 read pass, 跑一下, ok, 看到没有?从第一行跑到了最后一行是吧?所以读取文件这一步是非常非常的简单的。那么第二步,我们现在要去发起一个 http 的 请求了,这个 会不会更加的复杂呢?在 python 里面用它去发起一些,对不对?请求其实也是非常的简单的啊,所以我们继续看第二段代码,这个时候我们只要去 import 引入一个 request 的 这样的一个模块就可以了,大家注意看外面,这这这一个 就是我们第一个文件里面的内容啊,一模一样的,但我们唯一改了,改了的地方是什么呢?当然我要把这个把密码打印出来,改成把它拼接到你发起 http 的 请求里面,把那个密码的值给它填充进去,做这样的一个事情, 并且去分析分析响应,是吧?所以我们从这个地方开始,首先你要去发起 http 的 请求了,你必须要把这个地址给准备好,这个地址怎么来的啊? 我们 f 十二就可以分析出来,我把这个粘贴出来,当然这里呢,我们把它的这个路径和参数给分开了,前面这一部分呢是路径,那么它的参数 ok, 我 们用 request 的 这个库呢, 使用它的 get 方法发起一个 get 的 请求,路径是这个参数,我们来啊,一个一个的填进去, username 固定,默认 log in 也是固定,它代表一个登录的动作,只有这个密码它是需要变化的啊,密码就是 从这个 list 里面拿到的一个值,并且去掉它的前后的空格,注意这里还有一个 headers, 我们我们在发起请求的时候啊,除了这个请求的地址之外,它还有一个 request header, 注意啊,当然这个里面其他的也是无关紧要的,最重要的是什么呢?是这个 php search id, 还有它的这个安全级别,如果说你没有送这个会怎么样呢?我再重复一下啊,我前面特地跟大家讲过了, 我们在这个靶场里面爆破的是登录进来以后可以使用的一个场景,如果说你没有去送这个浏览器里面当前生效的一个 php id, 也就是它的一个 cookie 值的话, 那么你去访问这个地址,他直接把你弹到首页的那个登录的界面了啊,所以你是登录了以后才能使用的,我们就必须把这个 cookie 值把它复制进来啊,我来复制一下,并且把它贴到我们的代码里面,使用最新的 cookie, 否则你就会遇到一个情况, 你第一个请求就会没有那个 incorrect 的 提示,然后你就以为成功了,实际上是没有成功的。 ok, 好, 这一段应该也非常容易理解啊,这两个呢是我们唯一需要送的别的别的 hdp 请求头无关紧要,已经发起请求以后呢,它会获得一个响应,响 响应我们赋值给一个叫做 response 的 这样的一个一个字段,那么这个字段,那现在我又怎么从这个字段里面去拿到它的文本值呢?我怎么去分析有没有包含我们想要关注的一些字符呢? 这个 response 的 这个变量里面呢?它其实已经封装好了非常多的属性,比如说我们要去拿它的这个 hdd 的 响应码,它就会有一个 response 点 status code 代表它的 hdd 响应码,或者说它的编码 response 点 encoding 哦等等等等类似的,那它的文本值就是在这个 response 点 text 里面。 ok, 实际上它说的就是这个啊,它的响应的文本值是它的 response, 这个 完整的全部的内容就叫叫做 response。 点 text, 那 我们怎么从这个 text 里面去提取 关键的文字呢?非常的简单啊,在 python 的 代码里面,你也不需要去用什么 contents 或者 index of 相关的一些函数,你只要用一个 if in 来判断一下这个东西在不在包,有没有包含在这个小英的文本值里面就 ok 了。 如果说包含的话,那这次就没猜对呗,没猜对你当然就要 要继续猜去猜了啊,继续下一个循环,继续下一个循环,如果说你没有出现这个东西,那就反过来了, 反过来了,那肯定是猜对了,这个时候我们就要结束循环。 ok, 那 你要做的事情就做完了,对不对?好,现在我们就来跑一下这段代码啊,也非常的简单,我们直接来看一下效果, h t d p connection, 好, 发起请求, ok, 大家看到没有?第一个密码错误,第二个、第三个、第四个到第五个密码的时候破解成功,这个跟我们实际的情况是不是也是一样的? ok, 就 算即使你不知道它原来的密码是多少,只要这一个跟别的不一样了,你也知道了,它就是拆解成功了的,对不对?这个跟我们实际的结果也是一样的。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防渗透测试等共二百七十二集。 声明,此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你,主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 大家好,本节课呢,我们将介绍联合注入当中一些过滤,以及我们如何绕过这些过滤的技巧。 那么在开始之前,我们要明确一下,我们在哪些情况下联合注入对应的利用方式是不适用的。首先呢,第一个情况就是咱们优点关键字完全被过滤,你在我们对应的输入过程中,你输入的优点最终并不会被带入到数据库当中进行执行, 因此呢,这种情况是完全不能使用我们对应的联合查询。那么第二种情况就是当咱们页面当中压根不存在我们对应的查询返回数据, 那么此时你联合查询对应的结果也是无法得到相应的这种内容,那么在页面当中不进行展示,那么此时你也就无法进行对应的数据查看,那么 union 联合查询也就不适用。那么以上是我们联合注入不适用的两种场景, 那么接下来我们在开始前,首先要了解一下我们对应的过滤技巧当中常使用到的过滤函数。我们以 php 语言当中对应的函数为例做演示, 那么首先第一函数是 s t r 下划线 replace, 通过它的名称也会发现它应该是一个字母串相关的替换函数,那么在这个函数当中,它会需要加载对应的四个参数,那么分别是 find, replace, string, count。 那么对于 file 来说,以及我们 replace 以及 string 是 我们必须要设置的参数,那么 file 代表我们要查找的值,那么查找知道, 然后它要进行一个替换,那么替换的话就使用第二个参数 replace, 那 么最终我们要对哪一个具体字串进行操作,就是我们第三个对应的参数, 那么当然我们对应的括号就是一个非必需的参数,你可以进行书写,也可以进行不书写, 那么对应的这个参数呢?主要是用来接收我们替换当中对应的这个替换了多少次,进行一个技术,以便我们在后边进行操作和进行对应的统计输出, 那么这样的函数它对应的这个返回值会是一个对应的字母串或者是一个数组, 那么首先它对应的返回值当中,之前通过 find 查询到内容是会被替换到 replace 啊,这样当中内容, 那么这个函数是在 php 四之后的这个版本进行的啊,这个更新我们如果有对应的这个 php 三版本,那么是不具有这样一个函数的, 那么可以说四之后都已经具有了对应的这个函数,但是呢它也这个不断地进行更新,那么在 php 五点零当中是增加我们对应的这 quote 参数,那么在四点四点三之前, 该函数的 find 和 replace 参数都为对应的数值时,将会出现对应的异常,会引起空的 find, 所以 在内部指征没有更换到 replace 数值上被忽略。那么可以说我们在之前这个版本会出现这样的问题, 但是呢我们在新版本,那么现在目前来说,我们几乎没有使用四之后的这个版本,大多数是使用五七相关的这些版本。 那我们对于这个函数呢,我们也给大家做一个演示。首先呢我们申明一个序组,这个序组当中包含着我们要进行对应查找的这些 对应的符串,比如说 union, sleep, benchmark 以及 flow 这四个字母串,那么此时呢,我们使用 str replace 进行替换。首先呢在第一个参数 find 可以 传递一个符串,也可以传递一个替换序组, 那么替换成什么具体的值,可以直接使用引号表示一个空,那我们要从哪里进行查找对应字母串并进行替换呢?那么就使用我们对应的这个 circle 语句, 那么你自己可以定义一个 circle 语句,比如说在这里我们使用 dot 了 circle 等于一个具体的 select 星 a 否 mean, where, id 等于一,然后你可以加 union 相关的啊这个数据 union 之后的内容,比如说一逗号二,逗号三逗号四,逗号五。那么现在替换完毕之后,我们在这里对它进行输出,并且呢可以输出它这里的多了 i 表示替换的次数, 同时呢它也会输出我们原始的这样一个自复串或者是数组,因为我们这里传递的是一个数 这个字串,所以说它返回也是一个字串,那么接下来我们将在我们对应的这个 test p a p 进行编辑,并最后进行一个访问。那么首先我们输入 p a p 它们键不全,那么这是 p a p 文件的格式,之后呢,我们多了 a r r 等于一个具体的 a r a y, 之后呢我们进行对应的字串的设置,那么首先要过滤的第一个字串是 union, 接下来我们可以设置些其他的字串 batchmark, 同时呢也可以设置我们对应的 sleep, 也可以有我们其他的一些内容啊,比如说 flow, 现在设置完成之后,我们就需要进行对应的这个过滤,那么过滤是要有一个元词制复串,那么这个元词制复串就是我们多了三个语句,那么 select, 星啊, from at mean, where, id 等于一,然后通过一个 union 进行联合查询, union select 一 二三四五啊。比如说以这样一个词汇语句为例,之后呢使用 s 加下划线对应的 replace, 那 么进行一个替换,首先我们是 search 或者是 find, 那 么通过一个宿主进行传递,替换为具体内容是一个空, 那么替换完成之后,我们要指定相关具体执行的这个语句,那么它应该是会返回一个对应的 sql 语句,我们可同样可以使用原始的这样一个变量来进行接收,给它更新对应的值。之后呢我们可以使用 echo 将它进行一个对应的输出, 那么同时呢,我们这里应该是可以接收一个多啦 i 或者是 count, 那 么这个值呢,我们就可以对它进行输出。输出下我们究竟发生了几次相关的这个替换, 那么此时呢我们可以进行一个刷新,回到浏览器当中,那么在 test 这里刷新,那么会发现我们对应的这个 circle 语句进行执行,那么此时我们知道我们对应的 union 呢,在这里 会被替换为一个具体的空,那么替换之后,那么咱们对应的 sql 语句就应该变为这样子,因为它替换了对应的 union, 那 我们最终输出的结果也是这个样子,由于这里我没有输出换行,所以说我们 echo sql 语句呢和 echo qq, 我 们最终替换的次数都会书写在一行当中啊,可以看到我们在结果当中也是输出到一行当中, 那么这样我们就验证了我们相关的这个 str replace 可以 替换我们相关的啊这样一个 数据库当中的内容,替换为我们想要的这样一个值,对我们具体的搜索语句进行一个操作,这是我们第一种相关的啊这个函数,那么这个函数目前呢也有些啊,这个程序当中进行使用,但是呢使用的更多的话是通过正则匹配正则进行替换, 那么与它类似功能是 pr, e, g, 然后 replace 这函数,那么这函数可以接收很多的这个 参数,那么这些参数呢,最有或者最为重要的一些参数啊,就是 part 和 replacement 以及 subject, 对 于 limit 和 count 来说,我们一般情况下不设置也不使用,那么直接使用默认即可, 那么它的匹配首先是根据我们对应的赠责表达式 party, 那 么在这里我们书写一个简单的赠责表达式,那么用于替换我们这些对应的啊这个关键字, 那么之后呢,我们开始将它替换为一个空,那么咱们对具体的这样一个字母串进行处理 circle, 那 么最终呢给 circle 更新对应的值,输出对应的 circle, 接下来我们做演示,回到我们这个位置之后呢,将之前的这些内容注视掉。 接下来我们开始定义多了 circle, 在 这里可以将它 ctrl c 啊,然后 ctrl ctrl z, ctrl v, 将它进行一个粘贴。之后呢在这里加入关键字 union, 那 我们在联合查询注入过程中肯定要使用到 union, 那 么我们就可以使用 prang 下划线啊,这里下划线 release 替换,替换的话 pardon 我 们可以给他两个斜杠,然后对应的关键字,然后使用竖杠表示,或然后接下来是 batch mark, 然后接下来 s, l, e, e, p, 然后接下来是我们对应的其他关键字,当然这里我写的比较少,只写了四关键字,在实际情况当中可能是有很多对应的这关键字, 那么现在书写完毕之后,他要替换成一个对应的空,就直接使用两个单引号括起来。之后呢我们要替换具体的这样一个字母串,那么对 circle 进行传递,那么 circle 传递完成之后,我们可以给他做一个接收。之后呢输出一下我们对应的 circle control s。 之后呢我们刷新浏览器当中的啊这个页面,那么会发现我们新出输出的这个 circle 语句当中没有了我们对应的这个 unit, 我 们原始的啊这个位置 circle, 我 们也可以大家做一个对应的输出 circle, 那 么之后呢我们再输出一个相关的换行,以进行一个比较。 control s, 我 们回到浏览器进行一个刷新,会发现我们 这是我们最一开始的这个缩口语句具有对应的 union。 经过 prior release 之后,我们 union 被进行了一个替换,替换为一个空,因此呢 union 已经消失了,那么这样我们就在程序当中无法直接使用相关的 union 操作, 那么我们这是一个替换,那么我们除了替换之外,也可以进行一个匹配,如果我们匹配到,那么就进行输出啊,可能是一个具体的内容被发现了, 如果说没有匹配到,那么此时我们就输出另外一种方式,那么通过它来判断我们搜索语句当中是否存在相关的这些敏感字母, 那在这里它要接收相关的这些参数,那么这个参数当中我们主要使用 pattern 和 subject 分 别表示我们用于匹配的赠答表达式,以及我们要匹配测试的相关的这个真实数据。这里我们也给大家做演示。回到对应的这个 sublime, 这里开始您编选代码。首先呢我们要有一个 circle 语句,对 circle 语句 ctrl c, 然后在这里换行 ctrl v。 粘贴进来之后,我们开始进行一个匹配,如果 if, 如果我们进行一个匹配 prank 对 应的 match, 那 么首先是赠德表达式,赠德表达式要匹配相关的这些数据相关的字母串,首先是 union, 然后 batchmark, 然后接下来是 sleep, 之后呢我们是一个 flow, 我这里书写了四个内容,如果我们这样内容匹配到的话,那么就证明咱们很有可能对应的 circle 语句当中存在我们对应的关键字,或者是存在 circle 柱柱,我们就可以输出 circle 啊, inject found f u n d, 那 咱们直接输出这样内容之后呢,我们不进行其他操作,或者是直接 es i t 进行一个退出, 那如果我没有匹配到的话,那么执行相关的一个操作啊,我们这里就可以执行相关的输出,或者是直接输出我们对应的啊这个括语句,然后进行相关的数据查询,执行数据库操作,我们这里给它输出一个括语句吧, ctrl s, 接下来我们回到对应的这个浏览器当中,我们在这里给它进行一个刷新,那么会发现我们此时呢它输出了一个 circle inject fund, 因为我们这里有对应的这个 union 啊,所以说它会输出 circle 应该放的,并且退出程序不会执行我们 else 当中的这个语句,因此呢就不会执行数据查询,我们这里 echo circle 类似于数据查询,那么之后呢,我们如果将 union 给它去掉 control s, 那么在这里我们进行刷新,那么就可以进行正常的 circle 语句的执行,那么通过 pre match 就 可以筛选出我们这个 circle 语句当中是否存在着某些对应的关键字,如果存在的话,那么此时可以认定它是一个可能发生 circle 注入的这样一个查询, 如果没有匹配到,那么此时正常直行即可。那么当然在我们对应的这个正则表达式当中,我们可以进行一个大小写忽略的这样一个操作,就在我们最后这个位置加一个 i, 那 么加一个 i 之后实现的这个效果我们也给大家做演示,首先呢在这里加 i, 那 我们加对应的 union, 那么加 i 之后,我们无论你如何进行一个变化,那么这个 u n, 比如说我们变换成 大小写改变的这种 u n 的 话,那么由于我们忽略大小写,所有内容都会进行与 u n 同等的一个对待, 那么此时也可以匹配到,如果没有这个杠 i 的 话,我们可以进行一个查看,此时刷新浏览器会发现 unit 进行正常的一个查询,并且进行了对应的这个 circle 语句的输出。如果我们加了对应的 i 的 话, ctrl s 之后呢,我们进行一个刷新,会发现此时结果发生改变,表示 circle 注入被发现了, 那么这就是我们杠 i 的 一个操作。那么我们为什么会出现大小写对应的这种 绕过我们这种匹配?首先呢要明确我们在 my circle 当中,它对应的数据是不区分大小写的,因此呢你就可以大小写进行一个组合,来达到我们绕过某些对应过滤机制的效果。 那么以上是我们常用的对应的三个函数,那么接下来我们对安全这个防御机制进行一个绕过技巧的讲解。 首先呢,我们在 mc 当中大小写字母含义是一致的,如果咱们对提交的数据进行过滤时, 没有对大小写进行一个区分,那么此时就有可能造成大小写被绕过过滤的一个情况。例如我们这里有对应的这个 circle 语句,那么这个 circle 语句的话,它是要过滤掉我们相关的 union, sleep, benchmark 和 flow, 那 么如果使用这条语句,那么此时它只是过滤我们这里所设置的这些字符, 那么如果你使用大小写发生改变,它就无法正确地进行一个匹配,因此这条语句也就不会进行个正常执行。接下来我们做演示,首先呢,我们在这里打开一个 replace id, 那 么正常情况下,你可能输入 union select, 一 二三四五回车进行访问, 那么在这里我们给他进行一个报错,我们看一下对应的这个报错, 那么他没有查询出相关的这个数据,我们也可以查看源代码,我这里书写了一个相关的啊这个注示, 那么注视它会过滤掉我们相关的这个 union, 因此呢,你第一个报错之后,其实呢它 union 已经被过滤,那么最终 sql 语句执行的话,是没有对应 union, 因此不会联合查询出来我们相关的一二三四五, 因此在这里不会进行一个输出。如果我们将其中字母进行改变,比如说改变为 i 回车再次进行一个刷新, 那么在这里啊,我们进行一个刷新, union 泊车, 那么此时没有刷新出来,那我对原代码进行一个修改,输出一下我们相关的啊这条语句,那么在这里我们使用相关的 e q 语句将我们对应的啊这个 circle 最终执行的啊,这个 circle 进行一个输出,此时呢,我们进行一个刷新, 那么会发现我们最终的啊这个搜索语句在这里进行了执行,但是我们会发现我们相关的这个数据是在一个字母串当中没有发生对应的这个改变,因此呢,它是一个字母类型的注入,那么我们就可以使用对应的这些闭合,然后对相关的内容 啊,在这里我们就与 g 注式符闭合前面,然后再闭合后边,那么此时就可以进行一个正常的执行,并且查询出来相关的一二三四五。 那么当然如果你在这里将我们对应的这个 u 进行改变,改变为这样的内容,就会发现它会报错,咱们对应的这个 c 列的子句会发生报错,因为我们没有相关的优点,只有当我们没有匹配,比如说这里 i o 和车, 那么这样就可以绕过我们对 unit 啊,没有忽略大小写的这种比较,那么就不会对它进行一个替换,因此呢就可以正常的执行联合查询,那么这样就可以达到我们 solo 注入利用的一种方式, 那么如果我们在整个过程当中过滤了大小写的时候,那么此时就需要进行另外一种操作,那么开始另外一种操作之前,我们可能大家还要了解一个函数,就是 replace, 那么 replace 的 话它也会进行一个匹配,默认情况下它是区分大小写的,那么如果不区分的话,你需要在正则表达式这里加 i, 那 么如果加 i 之后这些内容是无法进行一个相关的正确匹配,那么使用大小写就可以绕过,那么此时的话,咱们对应的这个操作就和我们之前 replace 一 样, 那么对于 string, 呃 replace 来说,它是区分大小写的,如果要调用它的这个不区分大小写,你可以使用这样一个函数直接加 i, 我 们在这里也可以给大家进行函数的这个输出, string 下划线 replace r e p l i c e rap l a c 啊,这里是没有这样一个函数,那么大家可以下去去查找一下我们相关的啊,这个函数应该是有对应的这个区分大小写的一个替换, 应该是具有这样一个函数,但是一般情况下,我们使用正则匹配来进行一个替换,那么这两者的效果是相同的,我们就不再给对应的这个函数啊做演示了。 那么大家根据我们刚才介绍的,直接将对应的关键字大小写进行一种组合,最终呢就可以得到我们相关的这个操作执行代码利用。 那么当然 pr match 来说,我们也可以使用大小写,那么如果这里不加 i 的 话,就可以使用大小写,如果加 i 的 话,可以说你就永远无法进行突破,因为优点已经被完全过滤了,此时就无法进行一个使用。 那么以上的这些代码来说,他们只匹配我们对应的 union, 那 么并没有区分大小写,因此呢,它是可以使用大小写进行一个绕过的, 例如咱们可以使用 union 替换为 union 或者是 union 等等类似的一些组合,就可以绕过我们对关键词 union 这种完全对应的一种匹配,这是我们第一种绕过对应的这个方式,大小写绕过, 那么在我们某些情况下,我们可能进行了对应的这个替换,并且呢也忽略了对应的大小写,此时呢,我们就需要进行对应的另外一种绕过方式,就是双写绕过,对于双写绕过来说,它是有一定基础的,就是咱们使用赠则 表达式进行一个匹配的过程中,默认情况下,咱们匹配只进行一次,也进行一次相关的替换。 如果说咱们匹配到对应字母,并且呢替换为一个空,那么此时就可能造成双写绕过。双写绕过的含义就是在一个优点当中又嵌套了一个优点, 将我们内部的这个 unit 进行替换,替换成空,那么外部的 unit 组合起来就是最终的一个 unit, 达到我们绕过的一个效果。例如我们这样一段代码直接匹配,然后并且忽略大小写替换为空,可以看到 pragmatically, 并且替换为空,那么就适合使用双写绕过, 并且呢我们此时呢给大家做一个案例的说明,就是比如我们 union 啊这样关键字,如果想进行一个队形绕过,你就可以使用 union, 然后在前面加优点的前半部分,后面加后半部分,最终我们中间这个优点会被进行替换为空,那么最终前边和后边又组成了一个优点,我由于我默认只匹配一次,因此呢就可以进行一个绕过。我们这里也给大家做演示,我们找到 对应的啊,这个 double 在 这里呢,我们对它的搜索语句进行了一个输出,我们刷新一下,那么此时我们知道它是一个字母相关的注入。首先我们将相关内容进行一个 对应的啊,这个闭合,那么之后如果我们正常的使用右键 select, 一 二三四五直接执行的话会撤,那么会报错, 那么报错的原因啊在这里进行展现,我们 sql 语句是这样一个 sql 语句,可以看到我们对应的啊,这个 select 前面没有对应的 union, 这是由于我们 union 进行了对应的过滤,那么我们也可以查看源代码,那么这里 我们给他上一步,然后右键,然后乘元代码,在这里我给大家进行了注示,那么对应的注示表示不区分大小写替换我们对应的优点,那么此时我们就可以使用双写进行一个绕过,那么这个双写我们可以任意的进行一个组合,那么在这里啊优点 之后呢,我们在这里又加一个 union, 直接进行一个过滤啊,过滤的话直接就可以组合为 union, 那 么此时我们构造出对应的 c 链子句,直接回撤, 那么此时他会正常进行一个输出,并且在这里输出相关词汇语句,输出语句我们发现执行没有问题,那么此时我们对第一个查询进行了报错,回车会发现我们此时就可以正常输出,我们一二三四五,那么在页面进行输出数据,那么接下来就可以在这些位置 进行相关的啊这个注,利用获取对应这个数据,那么此时就可以绕过我们对应的这种过滤,那么这就是我们第二种绕过方式,双写绕过, 那么也有情况下我们会过滤相应的这个单引号,那么此时呢我们就很难进行绕过,那么对于这种情况,大家可能在后边进行数据库的这个查询过程中, 你可能数据库名称要使用到字母串,那么在 my circle 当中的是 circle 语句,字母串是必须加引号的,因此呢它过滤了对应的引号,那我们也就无法传递正常的这种引号,因此呢我们就需要对它进行绕过, 但是在 my circle 当中有一种方式可以对它进行绕过,就十六禁制,我们可以使用对应的这个字母串相关的十六禁制,然后加上零 s 的 话,替换相关的字母串,此时呢就不使用引号,从而也就绕过了对引号的一种限制。 那么对于引号来说,它有这样一些函数可以进行对应的这个限制, as slice, 那 么这个函数会返回。咱们在预定义函数串之前,如果存在我们对应的单引号,双引号斜杠 no 来说,它就会加一个对应的反斜杠。 那么接下来我们给大家做演示,首先呢回到我们对应的 test 啊这个语句当中,之后呢我们给它进行 一个对应的这个注视,同时呢我们把括语句给大家进行改变,改变的话我们在这里加引号,由于我们默认情况下是有对应这个引号,那么多了括语句就应该加引号, 加完引号之后,我们先将这个语句 ctrl s 吧,直接粘贴到它的下边, ctrl v 啊,这里应该是 我们这样直接给他加一个双引号,里边扩起一个单引号,加双引号之后,那么构造这样一条 sql 语句,我们此时注入的话,是要在这里进行一个注入, 如果我们输入相关内容,比如说引号,然后杠杠加,这样才可以对他进行一个相关的闭合,然后在这个位置才可以进行一个注入。如果我们在传递的这个参数,那么他要传递个参数,那么这个参数就是 id 值,那我们要对 id, 那么我们这里定一个 id, id 是 用户提交的一个内容,那么在这里用户肯定是要提交相关的数据,那么这个数据的话,它使用 get 方式是一个字母串, 那么在这个字母串当中,他首先要提交一个一如果使用的单引号闭合,然后杠杠加,然后带到搜克语句当中,搜克语句会进行对应的这个组合,将这个内容组合到我们最终的这个位置,也就是一这个位置,那么最终组合成我们这样一条语句, 那我们这条语句如果使用 and slices 啊进行对应的过滤,那么对它的 id 进行过滤,那此时我们把 id 进行一个接收,然后输出一下我们对应的 java id, ctrl s 进行一个查看,那么我们回到台词这里刷新, 那么就会发现我们对应的这个单引号会加一个反斜杠,那么此时它并不作为咱们 sql 语句当中的这个 单引号对待,而是作为字母串当中普通的一个单引号做对待。因此呢它依然是在我们对应的这个 circle 语句当中,并没有闭合之前的这个单引号,也没有注视掉之后的这个单引号,因为呢它一直在我们对应提交的这数据字串当中,没有做 circle 语句的这个处理, 那么这样就可以达到我们过滤引号的一个效果。那么咱们使用对应的查询数据库语句的话,那么如果出现这样的问题,那么你是无法进行正常查询,因此你就需要使用十六禁制来避免使用我们对应相关的这个单引号。 当然呢除了 and slices 这个函数之外,咱们还有可能开启了 magic g p c 这样个选项,那么它是在 php i n 这个文件当中,那么如果开启之后,你对应的这个注注点是一个数字型注入,那么是不影响,因为我们没有使用到对应的这个单引号, 那么咱们只需要在数据库获取的过程中,将数据库相关的这些表名改为相关的十六禁制啊,即可绕过。但是对于字母串 相关的啊,这个字母注入来说,那么此时呢我们如果出现相关的这个单引号来说,你就需要进行逃逸我们相关的引号,那否则的话,你相关提交的数据都作为我们字母串这个含义来执行,而没有作为赘口语句,那么此时呢也就无法利用对应的赘口注入, 那我们就需要使用到另外一种技巧,宽字节注入,那么宽字节注入来说,它适用的情景也是比较有限的, 那么对应的这个利用基础就是咱们数据库当中存储的数据是使用 g b k 进行编码的,那么此时用户输入的啊这个内容会进行双字节的组合, 那么也就是说我们如果加对应的反斜杠,那么咱们可以通过一个另外的字母进行组合,最终呢可以使得咱们对应的引号进行一种逃逸,我们这里通过代码给大家说明, 首先呢我们要注意宽字节注入,他可以说是一种逃逸引号的技巧,那么利用双字组合导致注入的这个产生逃逸我们相关的这个引号, 那么首先这是我们原始的 sql 语句,那么用户可以控制一这个位置内容的这个输入,如果说我们使用单引号输入一个一,然后加上一个单引号,那么由于它会经过 and slice 函数处理,那么此时它就会变为这样一个 sql 语句, 那么这个 sql 语句当中使用对应的反斜杠过滤相关的这个单引号,或者是转移相关的这个单引号,那么此时我们要查询的数据,其实呢依旧是在我们原始 sql 语句当中的这个单引号相当于我们查询 id 等于一反斜杠单引号这样一个数据, 那么此时由于我们一反斜杠单引号不存在,也就不会进行一个输出,那么单纯使用这种情况,你是无法进行引号的一种逃逸,因为无法进行闭合,它会作为矩阵处理,不会作为搜索语句执行。 但是如果我们数据库使用 gdp 编码数据,此时的话就可以造成引号的这种逃逸。当用户输入一个百分号 df 加一个对应的单引号, 那么经过我们对应的这个程序处理, and slices 会将我们斜杠啊反斜杠单引号,这里单引号会自动加反斜杠,那么此时我们就会变为这样一个百分号 d f 反斜杠,然后单引号, 但是此时我们对应的 url 如果对反斜杠进行个编码,那么它就会改为百分号 d f, 百分号五 c, 那么由于它在 g b, k 当中是会被识别为一个汉字,我们在识别过程中是从左到右组合成对应内容的话,那么此时我们就会使得我们这是一个汉字,而我们单引号来说,就会发挥单引号的一个 正确或者是 circle 语句执行的一个效果,那么在这里我们可以查看我们相关内容,首先啊变为这样的内容, 变为这个内容之后,他会变为真实的一个汉字一,然后和一个真实的汉字, 那么这个汉字的话,那么我们就可以看到他俩进行一个组合,那么单引号此时呢就作为单引号执行,那么后边还有个单引号进行注示,接下来开始搜索注入各种利用方式,就可以进行一种利用,我们这里也可以给大家做对应的这个演示, 我们找一下啊宽字节相关的这个注入,我们啊找一下相关的 w 叉,那么我们并且输出 sql 语句,可以看到此时呢它是这样一种效果,我们可以右键,然后查看源代码,在这里我们源代码是 anselace, 然后我们 sql 语句啊应该是使用了一个对应的 my circle 啊, my circle query, 然后是 u g b k, g b k 的 话,就是我们对应使用宽字节注入所必须的一个调简,如果你没有使用对应的这个 g b k 的 话,那么就会出现相关无法进行对应的绕过,因为你没有使用它编码,它就不会对它进行一个识别, 那么此时呢在这里呢我将使用波波索给大家做演示,获取数据库相关的这个数据,那我们在这里进行一个阶段的设置, 我们啊打开相关的啊这个选项,然后给他的这个网络配置进行设置, 然后确定在这里完成之后,我们回到截断这个位置,开启截断,然后进行一个刷新,我们得到对应数据包,然后将它发送到 pita 当中 之后呢,我们开始进行发送,那我们 can run 一下啊,渲染一下相关这个页面,查看相关结果。在这里思考语句的话,单引号没有被识别,那么此时我们开始绕过我们相关的这个单引号,那么就需要输入百分号 df, 然后单引号,然后刚刚加,然后进行一个 set 发送, 那么在这里啊,他会报一个错误啊,表示一个错误的相关的这个页面,那么这是由于我们对应的这个空格是要使用加号进行连接的,如果你直接使用相关的这个 接在这里空格的话,那么它并没有拼接到 url 当中,那么此时就会进行相关报错,由于我们现在不进行数据注入,直接这里不加空格,那么可以看到它颜色也没有发生变化,是一个类似红色的啊这样的内容,那点击 set 的 话,就会看到正常的进行对应的输出, 并且呢搜索语句啊,在这里已经发生修改一个对应的问号,然后接下来已经对单引号进行了一个相关的啊,这个改变 我们可以看,然后是一个这样的内容,百分号 d f, 然后和我们斜杠应该会进行一个组合,然后单后边这个单引号和我们前面的有组合,然后后边是一个注视,接下来我们开始进行联合查询 union, 然后加号 select, select, 然后加号一二三四五,然后点击 set 进行查看,那么此时呢,我们对第一个数据进行一个报错啊,负一 set, 那 么在这里我们会发现它依然对我们单引号进行了测试啊,那咱们先暂停一下, 可以看到啊,咱们在这里呢已经输出了相关数据,一二三四五,那么应该是没有问题,应该是我们这里已经将这个内容作为一个整体,对它进行一个报错,那么此时 报错之后,我们相关的这个数据进行一个输出的话,可以看到正常的进行相关输出,那么这样就可以利用对应的这个联合查询,联合查询的话,首先我们可以在对应的这个位置啊,比如说查询什么呢啊,查询一个 cable name 之后呢,从具体的位置进行查询,使用加号表示空格 from 加号空格 information scam tables 加号 where, 加号 table s, c, h, e, m, a 等于一个具体的这个数据在这里呢,我们使用 database data base 的 话,就是我们对应的数据库,我们查询一下我们对应的这个表明,那么在这里会输出我们相关表明默认啊,那么它输出第一个表明, 那么如果我们想输出所有的这个表明,使用 group g, r o, u p 下划线 connect 连接,连接我们对应的这个数据库当中的这个表明,然后点击 set, 那么在这里就会发现我们对应的表明具有,而命和 person 两者使用对应的逗号进行分割。那么查询完表明之后,我们需要查询对应的字段名,我们要有敏感性,而命是管理员表,因此我们需要查询它 qlms 改为,然后在这里表也改为 qlms, 查询相关的字段,那么查询字段过程中,我们要将 table name 进行一个修改,我们查询具体的啊,这样一个 对应的这个 adm 表,那我们需要加单引号,如果这样来执行的话就会报错,可以看到咱们四个语句报错了,那么错误发生在我们 adm 这个位置,因为我们不能使用单引号,那么此时呢,你就需要对它进行一个修改, 那么就不能出现单引号,就要使用到我们之前的十六禁制,那么在这里啊,我们十六禁制给大家需要打开一个相关的工具,打开我们啊这个课程工具当中,我们找一下,找一个小奎 啊,这里应该是在第二张,然后小葵转换,那么当然你也可以在互联网上啊找一些相关的这工具,那么在这里啊,我们将使用它进行一个转换, 那么使用转换的话,首先转换阿德命,阿德命给我转,然后在这里有时令禁止,我们直接 给它进行一个复制,复制出来粘贴到这个位置,直接点击发送就可以得到相关的列名,有对应的 user name 和 password, 现在呢有了表明,也具有了列名,我们就可以查询对应的具体的这个字段,我们使用 cancat 进行一个连接, 当然啊我们在这里 concat 吧,之后连接 username, 以及我们连接对应的这个 password, 那 么在连接过程中,我们可以进行一个分割,比如说零 s 五 e, 使用这样一个字母分割,然后 password, 接下来我们查询从一个具体的这个表明当中啊,从一个具体表明当中 from 我 们对应的这个表表的话,我们 使用 adm 啊这张表,那么点击 set 进行查看,那么此时呢就会输出我们第一条数据,它对应的这个用户名是 adm, 密码是 flag 相关的值,那么在 cti 比赛当中,我们直接拿到了相关的 flag 值, 那么可以看到这就是我们利用宽字节注入绕过我们对应单引号进行对应转译的一种方式, 那么在这里呢,我们就介绍了我们之前所对应的十六禁制啊,避免他相关的过滤要过,那么也可以使用宽字节来逃逸我们对应引号,一般情况下这两者是结合来进行一个使用的, 那么在我们之前介绍的这过程当中,都是使用联合注入查询来完成相关的操作,那么特别要注意,如果出现我们完全匹配 u 念的话,那么此时是已经无法利用 u 念,我们需要考虑其他的一些利用方式来完成我们相关的词汇输入, 那么当然我们这里介绍的宽字节只是给大家做了一个说明,就是我们对应的这个百分号 d f, 其实呢百分号 df 和五 c 组成相关汉字,还有其他的一些百分号相关的这个 u l 编码之后的这个十六定置制服也可以与百分号五 c 进行组合,组合为汉字, 那么比如说百分号 a a 也可以与百分号五 c 进行组合,或者百分号 b b 也可以与百分之五 c 组合,那么同样可以达到宽字节注入的一个效果,那么绕过我们单引号相关的这个过滤, 那么下面呢我们进行总结。首先呢我们要了解我们在联合注过程中可能出现的验证方式,以及我们相关的绕过技巧,那么具有对应的 大写大小写绕过,双写绕过,以及我们后边所介绍的宽字节注入,以及十六进至绕过单引号相关的过滤,那咱本节课先到这里,再见。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防渗透测试等,共二百七十二集。 声明,此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你,主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。 大家好,本章节呢,我们来介绍 web 实践赛题的一些分析与解答,我们将以一些实际当中的赛题进行分析对应的知识点以及给出对应的解析方案。那么首先呢,本节课我们介绍第一个题目,这里我们给出题目的圆满, 那么我们这个圆满一般情况下,在题目当中它会进行一个高亮的显示,因为一般情况下我们有 highlight file, 会将我们当前对应的这个 全局变量 f 所指的就是我们当前代码的这个文件,那么此时就会将代码显示到页面当中,并且以一种高量的形式进行显示, 那么当用户进行访问页面时,那么就会获得我们对应的源码,那么此时呢,我们最需要做的就是对源码进行一个审计,分析源码当中具体的每段代码相关的作用。 那么首先我们会发现,在这个题目当中,他会将我们对应的代码进行分化,用空格进行作为分割符进行分割,那么此时我们就根据他这点小暗示来进行对应的代码分析。首先呢我们这条语句大家肯定很清楚,他就是一个高量显示代码, 那么之后第二块就是我们在这个位置相对应的这个代码,那咱们分析这段代码会发现,首先呢它定义了一个变量 d i r, 并且呢设置了一个路径, 那么这个路径是在当前路径下设定一个 set box, 类似于撒香的这样目录,那么通过名称我们这样来推测,它可能会存储一些对应内容,那么同时通过点 一定要注意 php 语言当中字母串对应的连接,要使用点来进行连接,而不是使用其他语言当中的加号进行连接。那么之后呢,我们通过一个 server 全句变量, 那么这个全局变量会获得我们访问这个网站所对应客户端的这个 ip 地址,那么这样拼接之后,它就会形成一个在目录 setbox 下以 ip 地址为对应的目录的这样一个路径, 那么此时呢它通过 if 判断,那么在这里有一个 file is 确定我们对应的文件或者是目录是否存在,如果不存在的话,那么此时的话它就会执行 make dir 来新建这样一个目录, 那么如果存在的话,那么直接执行 c h dir 表示 change dir, 那 么此时呢它就会切换到沙箱目录下这个 ip 地址对应的目录, 那么这样就实现了在我们具体外部访问 ip 地址目录下来进行对应的这个操作。 那么这是我们对应的第一段代码,仿佛没有任何对应的作用,它只是做一个环境的配置,用于设置目录和切换目录,那么接下来呢,我们开始分析第二段代码,那么这段代码的话,它要接收一个 get 方式提交的参数, 那么它是一个 a r g s 变量来进行接收,那么同时呢,我们会发现它有一个对应的 prac match, 那 么这里的话,它会对 a r g s 这个变量当中的每一项进行一个变例, 然后进行一步判断,通过 prime match 正则匹配我们对应的每一项。那么在这里大家会发现 a r g s 不是 一个普通的变量,而是一个对应的数值,因为它在这里使用了方括号,并且使用下标,所以进行访问, 那么它应该就是一个对应的数值,因为一个变量的话,你无法使用 quote 来进行便利, 那么开始匹配的话,他使用政策表达式,那么在这里对应的政策表达式对应的含义就是我们要使用对应的数字字母下划线来组成我们对应的每一项,如果出现 无视数字字母下划线这些对应的选项的话,那么直接执行 e s i t 进行退出,如果它是字母数字下划线组成的话,那么都判断完毕之后,那么它执行一个 e s e c, 那 么这样的函数代表会执行我们对应系统当中的这个命令,那么很有可能这个处会替代为其他对应内容。 那宾处的含义是不执行任何内容,无论你传递什么,他也不会进行定的输出,他都是一个处,那么可以说他不会发生任何作用, 那么他要执行的话,他会接收我们通过点连接的啊,这个将数组当中的每一项转换为对应的啊,这个字母串相关的内容,宾破尔实现了这样的效果,但是每一项又使用空格来进行分割, 那么这个空格的话,首先呢我们在这里给大家举例子,比如说 a, r, g, s, 它等于一个数组,这个数组比如说一、二、三, 那么这三个选项的话,通过 input 会更改为对应的字母串,字母串对应的内容就是我们一,然后空格二,然后空格三这样内容,那么可以看到在这个位置也有对应的啊,这样一个 空格,那么这个空格是为了分割我们第一次没有空格的这样内容,如果我们在这里没有空格的话,那么最终的命令会形成这样一个命令,那么我们有空格的话回车,那么这样他就传递相关的参数,那么在这里 esc 啊,就会执行这条命令, 那么通过代码分析的话,那么我们也可以找到我们题目当中所考察的相关内容。首先呢第一点就是循环便利,那么循环便利的话,那么我们会发现 args 它传递的是一个数组, 那么同样可以通过匹配的话会发现啊,它必须要进行数字字母下划线的组成,也就是我们传递的每一项, 所以说我们这样一个点是必须绕过的,我们可以想想如何能够给他执行一些其他的内容,那么传递并不是数字字母下划线使得他绕过,并且可以执行后边的这段代码, 那么同时呢我们会发现执行代码当中的这个拼接使用空格拼接,那么这样的话,我们就会发现这些空格有利于咱们执行多条命令,因为命令与参数之间肯定是有空格的, 那么此时呢,我们会想,如果它可以执行多条命令,那么 esec 执行多条命令的话, 那么我们是否可以直接 cat 对 应的 flag 值,那么此时呢,正则匹配就帮助咱们打消了对应的念头,因为它只能出现数字字母下划线的这些内容, 那么你如果读起对应的啊这个文件的话,你肯定需要进行路径的这个使用,那比如说一个斜杠啊,然后一个反斜杠,那么这些都需要你进行绕过,但是呢它是无法进行绕过,因此呢,我们就不能直接通过命令执行来读取对应的 flash, 那么因此我们要想到另外一些方法,它虽然不能执行我们对应的直接读取,因为它无法出现路径,那么此时我们是否可以上传一个 web shell? 当然呢,对于我们这个目标系统来说,它是一个下载 web shell 的 一个方向, 那么此时上传一个 web shell 的 话,那么咱们是否可以执行相关的这种命令接口来获取对应的 flag 值? 那么在这里大家肯定会有疑惑,怎样上传 webshop? 其实呢,在这里我们可以执行相关的命令,那么我们就可以执行对应的啊,比如说 wget 以及我们 ftp 相关的命令来获取相关的这个文件。 那么下面呢,我们开始对题目当中一些对应重点内容进行分析。那么首先呢,我们知道在这里冰处的话,他会执行命令,那么如果不做任何处理,传递的都是正常的数据的话,你传递多少他都不会进行显示输出,而是直接运行完成即可, 那么这样做的话都是一条完整的命令,因此呢,我们要想实现多个命令执行的话,就需要进行一个分割,那比如说我们有对应的语符号或符号,或者是对应的这个符号, 那么当然呢,我们还有一些对应的换行符啊等等一些内容。我们通过变例的话,会发现我们这个正则表达是 会对我们反斜杠 n 啊不进行匹配,而是直接跳过执行后边内容。因此呢,我们这样一个换行结束之后,会使得我们原有的命令变为兵啊,然后对应的啊这个处加 u e, 然后比如说我们直接给他换行之后,在这里啊一二三啊这样一条命令,那么此时 linus 接收到啊这个命令之后,那么 e, s, e, c 执行换会将它作为一个单独命令,会将它作为一个单独命令,因此就变为两条命令, 那么此时呢,我们就可以进行一种绕过,那么对于反斜杠 n 来说,我们要通过 get 方式传递的话,你不能直接反斜杠 n, 而需要对它进行一个编码,将它编码为百分号零 a, 那 么此时给它传递的话,就可以实现我们对应的两条命令的一个执行。 那么例如我们这里访问这里有 l, 并且呢给它传递一个字母,那么这个字母就会传递给 b 处的话, 那么它接收一个参数啊,不会有任何显示输出,那么百分号零 a 会将后边内容 换行,那么此时接下来参数首先是 touch abc, 那 么此时就会在当前路径下创建一个 abc 的 这样一个文件,那么在这里呢,我们给大家做一个简单的演示,首先呢我们回到 linux, 然后输入对应的密码,我们切换到 cd 啊,然后 y 三 w h t m 喽,跳一下我们对应的这个内容, index 点 p a p, 然后回车,那么在这里啊,是我们对应的这段代码,那么此时呢,我们给大家开启一下啊,帕奇服务 开启之后,我们访问这个页面,那么同样我们在这里的话,使用 l s 进行查看,只有 index 点 p a p, 那 么我们给它全屏啊,这里有些卡顿,我们稍等一下,之后呢,访问一二,七点零点, 零点零点幺回车,访问的话,它会输出对应的代码,我们经过分析的话,我们传递啊,对应这个配漏的,那么首先呢啊,我们给大家传递对应的 斜杠啊问号,然后对应的 a r g s, 然后在这里 a r g s, 要加方括号才能表示数值,之后传递第一个内容啊,比如说 a, 然后百分号进行多个对应的这个内容的传递, a r g s, 然后这是数组,那么在这里啊,你不需要引入对应的下标,那么你传递的话,它自动会动态地成立一个数组, a r g s, 那 么一定要注意要加方括号,可不加下标缩影之后呢等于一个 touch, 然后接下来是我们与符号,然后对应的 a r g s, 然后接下来是数组,然后比如说 abc 啊,回车进行访问之后呢,使用 s 进行查看,可以看到这时候在站点目录下就新建了一个 abc, 那 么这就是我们这条命令啊,执行之后的一个结果,那么通过这里呢,其实呢,大家就会发现我们可以执行命令了,执行我们相关的这个系统命令,那么绕过了我们对应的这种 过滤啊,也就是正则匹配,使得我们可以执行多条命令,那么此时呢,大家要上传一个 webshop, 那 么你单纯的执行这条命令是无法完成代码的一些上传的,那么因此呢,我们还需要做另外的一些内容, 那么此时的话,我们就需要向远程下载获得我们对应的这个 webshop, 那 么远程下载的话,那么大家就需要有对应的这个 ip 地址, ip 地址当中有对应的点,那么通过政策表达式匹配的话,是无法匹配到的,呃,这时候我们就无法进行成功的执行接下来的啊,这个 esec 啊,执行系统命令,而是直接执行了 exist, 那 么执行退出,因此呢我们就需要 不能使用点的 ip 地址,那么这时候大家就需要理解 ip 地址的本质, ip 地址,其实呢我们最常见的是一二七点零点零点幺啊这样一些格式, 那么这些格式它代表的是点分时进制的显示方式,那么 ip 地址的本质并非说只能这种显示,其实呢它是由零幺组成的一些序列,那么这些序列的话通过进行分位,那么将每八位分为一个对应的时进制数, 那么此时呢分为四个部分,那么因此呢就具有了点分实景值,但是如果我们不使用点分实景值的话,那么直接将二进置进行转换,转换为一个特别大的整数,那么也相当于我们实现了对应的这个效果, 也可以进行访问,例如我们将一二七点零点零点幺对应的这个特别大的实景值数,那么给它复制到这里,粘贴到这里,回车进行访问,那么在这里稍为 啊,这里 hdp 看周围啊,可以看到,也可以直接跳转到一二七点零点零点幺,实现我们相关的这个页面的访问。 那么如果你不会我们对应的转换的话,那么其实呢,你可以在这里啊,比如说你要对一二七点零点零点幺进行对应的这个设置的话,那么你在这里直接输入一二七点零点幺,如果你要对其他 ip 地址进行转换的话,输入其他 ip 地址即可, 那么当然你也可以打开这个页面,然后输入对应的内容,也是可以进行转换的,那么这里呢,我们就不再演示了,大家可以根据我们给出的链接来进行转换, 那么同样的啊,大家也会发现我们 ip 地址当中不能出现点那文件后缀名,我们经常点 p a p, 点 a s p, 点 g s p 啊等等,那么这些的点也不能出现,咱们该如何进行对应的绕过匹配呢?那么此时呢,再给大家介绍一个知识点, 比如说啊,在这里我们有一个 abc 这样一个文件,那么此时呢,我们 abc 当中没有任何内容,我们给它进行一个编辑 gt。 abc 回车,那么对它编辑的话,我们给它编辑为符合 php 脚本的这样一格式, 那么在这里啊 pep, 然后比如说 echo, 然后对应的 hello word 结束符, 那么如果是我们文件结束的话,其实呢你可以不加对应的这个结束相关内容,那么当然为了完整格式啊,我还是加上对应的这个问号,然后大于号,然后点击保存,然后关闭。 那么此时呢看一下 a b c 就 具有了 p a p 格式的代码,那么你直接使用 p a p, 然后 a b c 回车执行,就会发现它对应代码也会完成执行, 那么这样就实现了我们不需要文件后缀名调用 p a p 执行相关代码的这样一个效果,那么此时就不会出现文件后缀名当中的点绕过我们正则匹配。 那么下面呢,我们对解析方法给大家进行说明。首先呢我们要上传一个 webshop, 那 么这个 webshop 你 可以通过各种方式来进行上传,比如说 wget 以及我们对应的啊这个 busybox, 那 busybox 是 集成很多 linux 命令的这样一个小的终端,那么其中有对应的 ftp 啊 get 的 哪些命令可以获取对应的文件? 那么此时我们先来介绍 wget 相关命令,那么首先呢我们访问 url, 然后给他传递一个任意的参数,那么这个参数之后拼接我们冰处,冰处 如果是一个 a 的 话,能可以看到不进行任何输出 abc 火车也不进行任何输出,那么他不会输出相关内容,无论你传递多少个参数,都为一个正确的内容,不会爆出异常, 但是要分割的话,使用百分号零 a, 也就是反斜杠 n 传进去过去,那么此时就可以执行相关命令。我们可以创建一个 abc 的 啊这样的目录,然后给他进行对应的换行,那么创建完目录之后,我们需要切换到目录,在他这个目录下进行工作, 那么这样做的话,帮助咱们在用户自定义的这个目录下进行对应的工作,那么对应的权限啊,不受到原有权限的一个限制,因为在这里的话,咱们使用 p a p 语言当中的 macd i r 进行对应的目录的新建,与我们直接使用 linux 命令进行新建的话,它对应的权限默认分配是不一致的, 而使用 macdi 啊,就相当于我们使用当前用户在当前目录下新建一个对应的目录,因此它是文件或者是目录对应的拥有者,它具有读写执行相关的啊这个权限。 那么此时呢我们切换到对应的 abc 啊,那么每一条命令之间都需要有对应的这个分割符,那么这样执行完毕之后,我们就可以获得对应的 webchat, 然后 ip 地址,这个 ip 地址就是我们在这里转换的大数字, 那么完成之后,我们同样这个命令要需要一个换行才可以完成执行,那么这样我们就在 a b c 下具有了 ip 地址上所要给我们进行传递的啊这样一个文件,当然啊,在这里大家会发现我没有相关的这个文件, 而是直接一个 ip 地址,那么此时你对于这种设置的话,你可以直接在代码当中啊,比如说它是一个 index 点 pep, 你 可以设置一个重定向,将它重定向某一个对应的,比如说一点 ip 啊等等,一些 abc 啊等等一些无法识别的这个 个内容无法解析,那么他会执行下载,那么就可以完成下载。当然你也可以实现我们直接 in text 点 p a p 直接默认路径啊,或者是默认文档,就是我们对应的一点 v i p 或者是一点 tab 等等一些对应的这个 打包文件,那么现在呢完成上传我们就可以执行。执行的话,在这里的话,我们对应的这个 下载的内容啊,他是一个,比如说 a a a 两个 a, 两个 a 的 话,我们需要给他进行 解压缩啊,也就是解包,那么因为他是一个打包之后的,我们使用它来进行解包,那么他可以没有对应的后缀名。解压之后的话,我们就可以对他进行一个执行, 那么执行的话我们给他将原有的这个 abc 啊,这里是他对应获得的这个内容, 那么原有的这个 abc 啊,开始进行 php 的 执行,那么也就是解包之后的 a a 就是 我们原始的这个内容,因此呢对它进行 p a p 的 执行,那么就可以完成相关的执行, 那么大家可以根据我们给出的这段内容进行对应修改,比如说他直接下载对应的这个文档,然后直接执行,看是否可以执行成功,那么要根据题目当中所对应的这个权限设置来进行修改, 那么在这里的话我们就完成了啊相关的啊这个内容,那么除了我们可以直接使用 w get 来进行下载的话,我们也可以使用 busybox, 那么在这里呢我们传递一个任意参数啊,之后呢我们通过 busybox 执行 ftp get 来下载我们 ip 地址当中,也就是 ftp 服务器当中的这个 script 脚本,那么这个 script 脚本,那么大家就可以使用 php 来执行我们对应的这个 script 脚本,下载之后就完成执行, 那么在这里我们有对应的这个脚本,我们给大家做一个演示,给它复制过来,然后在这里我们使用 gbt abc 啊,比如说现在我们有 abc 啊,就下载脚本,那么我们脚本的内容是我们在这里所设置的 file put contents 啊,然后将 shell 点 pep 当中内容这个保存为这样一段内容,那么此时接收一个 get 形式的啊,这个 cmd 参数,那么可以执行系统命令,然后保存,那么此时它没有任何限制,就可以执行相关的任意命令啊。保存之后, 然后呢我们在这里 get 下 abc 回车,那么获得之后,直接执行 p a p 啊,然后 abc 回车,那么 l s 进查看就具有了 shell 点 p e p, 那 么此时呢我们就可以在浏览器当中直接访问对应的 shell 点 p e p 啊回车, 访问到之后,我们可以传递相关的这个参数啊,比如说 c m d 等于 l s 进行查看,那么此时我们就可以看到啊有相关内容,如果说啊,我们此时的话,在我们相关路径啊,比如说我们 cd 啊,下根目录,然后直接拴一个 flag 值啊, flag a, b, c, d, 那 么保存到 flag 点 type 回车,那么我们在浏览器当中, 然后执行这段命令啊,比如说 cat 一下我们对应的 flag 值, flag 点 test 回车,那么此时呢就可以得到相关的这个 flag 值,那么这就是我们整个过程,那么对于这个获取的话,那么大家可以查找对应的资料,查看很多获取文件的对应的这些命令, 那么当然啊,这些命令的话都可以完成执行,那么但是你需要具有一个自己啊对应的这个公网 ip 地址,那么在实际题目当中, 那么此时要将它进行一个转换,那么这样就可以进行对应的这个文件下载,获取到这个文件之后,那么直接执行, 那么就可以设置到我们对应的这个 shell ppt 当中,具有对应的这命令执行相关的这个文件,那么此时的话,你就相当于对服务器进行了接管,那么就可以寻找相关的 flash, 那 么这就是我们第一道题目相关的解析,那咱们先到这里再见。

本视频耗时五个月,共计二十八小时,十七分钟,零基础自学黑客从入门到入狱,全套教学视频包括公爵安装与使用、黑客攻防、渗透测试等共二百七十二集。 声明,此教程仅供学习,禁止用于违法行为。要是想系统学好网络攻防技术,我自己录制的二百节从零到进阶的视频教程可以分享给你。主流的网络攻击和防御的技术都讲的清清楚楚,只要是粉丝留个六百六十六就行,只希望你能把学到的技术用在正道上。本专题主要讲解以下几个内容, 一、介绍文件上传漏洞形成的原因。二、介绍漏洞的检测与利用。三、介绍漏洞的修复方法。我们可以看到,一和二主要讲解怎么攻,三、主要讲解怎么修复就是怎么防。 本专题适用的学习对象网络安全技术的初学者。建议的学习方法有,一是总结上传漏洞的形成原因。二、自己搭建实验环境进行漏洞的复现。三、了解系统环境在上传漏洞中起到的作用。 那么在网站的运行过程中,不可避免的要对网站的某些页面或者内容进行更新,这时便需便需要使用到网站的文件上传功能, 如果不对被上传的文件进行限制,或者说限制被绕过,那么该功能便有可能会被利用于上传可执行的文件或者可执行的脚本到服务器上,而导致服务器的沦陷。 那么常见的上传漏洞有哪些呢?第一个,服务器配置不当导致的文件上传,那第二个,开源编辑器存在上传漏 洞。第三个,本地文件上传限制可以被绕过。第四个,服务端过滤不严,但可以被绕过。第五个,解析漏洞导致的文件执行。第六个,文件路径的截断, 这里服务器配置不当,主要是 windows 的 写前圈的漏洞。第二个,开源编辑器网上主要有 e, webedit, f c, k, a g 的 等等。 本地文件上传限制主要是浏览器的 java script 的 限制。服务端过滤主要是在服务端的代码进行过滤的时候, 不是特别严格,可以被绕过。解析漏洞是我们会在后面进行讲解,文件路径就是上传的路径,可以被修改或者说被截断。 上传漏洞的利用成果,一、较为快速直接的获取网站的 web 权限。二、配合其他漏洞达到同样获取网站权限的目的。三、为后续进步渗透提供较为方便的跳板。 这节课主要讲解 i s 的 写程序漏洞。漏洞的成因,在服务器配置不当的时候,可能上传文件的页面都不需要就可以实现文件上传功能,一般都是 http 铺的方法, 当然未把服务器默认是不开启铺的方法。出现该漏洞的主要原因是网站管理员对服务器的错误配置, 常见的主要就是管理员错误地打开了 i s 服务器的 web d i v 功能,而且没有开启权限验证,导致可以扑的文件到服务器上。再利用服务器的解析漏洞或者 web d i v 的 木方法,将上传的带有恶意代码的普通文件后缀修改为可以执行的文件后缀,从而运行恶意代码。当然网络上已经有了利用工具,利用手段也是十分简单, 这里我们可以看到这边是 i s 的 管理器,我们看到第三个 web 服务扩展,其中有一个我们已经开启了 web div 允许, 这就是漏洞成因,漏洞的验证主要是检测是否开启了 put, move, copy 等等方法。 我们这里使用的是 bob swift 漏洞利用就是从写行线到文件上传, 第一步就是 put 一个 txt 文件到服务器上,第二步是把文件模板成 is, 可以 解析的甲方文件,如 s p。 这边就是网络上已经有人写好的一款工具 is write。 那我们现在来验证一下, 这是我在虚拟机上搭建的一个服务器, ios 六点零的已经开启了 web div, 可以 登服务器看一下 管理工具还是管理器。我们可以看到我这边已经打开了 webdiy, 而其他没有进行任何设置, 当然这是 i s 写权限,那么网站这边肯定要勾上写入,也需要勾上脚本资源访问。我们现在来通过 book swift 来验证一下 这个打开 book swift 需要交互环境,打开比较慢, 你看一下代理 let's repeat options, p 两个文字就是选项的意思,可以看出它发送之后 这边可以支持的有哪些方法。 copy, move, put, delete 的 方法,这些都是支持的说明,那么那么说明就是存在 i s 写实现漏洞的。 接下来我们利用这款已经写好的工具来利用一下。 这边我们刚才说了,第一步是 put 一个 txt 文件到服务器上,第二步就是 move 文件,接下来我们来实验一下,先写一下 ipad, 复制一个文件,选中 txt 文件内容就是这个一句话,木马,然后我们提交二零幺 correct, 那 就是上传成功了,我们可以到服务器上看一下, 这就是我们刚才上传的复制过来的一个一点 t s d 文件,现在再来看一下目,它这边是目乘十二点 s p, 我 们来提交数据包 二零幺 correct 这边我们也可以看到刚才的一点,刚才的 test 点 tfc 已经变成了 shell 的 sp, 那 么说明我们这个 shell 的 sp 已经上传到服务器上, 我们通过浏览器来看一下 网络有点问题,来拼一下,看能不能拼通, 是可以拼通的, 这边也可以打开了,我们来看一下,这就是常说的一句话,木马已经上传成功了, 当然我们也可以连接,那现在这里不进行演示,我们只是进行漏洞的说明,我们继续讲解一下显示漏洞, 这些漏洞是外部服务器应对 http 请求处理不当,将不允许可执行的脚本或者文件当作了可以执行的脚本或者文件禁言执行, 该漏洞一般配合服务器的文件上传功能,以获得服务器的权限。 解析漏洞的分类主要有以下几个,第一个 i s 的 五,五点五点几或者六点零的解析漏洞。 i s 七点零或者 i s 七点五或者 n g x 小 于零点八点三的畸形解析漏洞。 第三个 n g x 小 于八点零点三的空自结代码执行漏洞。第四个阿帕奇的解析漏洞。最后一个是 n g x 的 c v e 的 解析漏洞。 我们来看一下 r s 六点零以下版本的解析漏洞。第一个就是目录解析,当 r s。 在 解析一个文件的时候,它包含了一个类似于叉叉点 a s p 的 这个目录, 后面不管是什么文件,它都会当成一个 a s p 文件来执行。 第二个封号后不解析的漏洞,我们设计一个形容 text 点 s p 封号点 j p c 的 这个文件名,当上传之后 还是这个文件名的时候,执行的时候只是当成 text 点 s p 这种 s p 文件来执行。最后一个就是 s a c e r c d x 默认可以执行 第二个 i s 七点零, i s 七点五和 n g x 小 时八零点八点三的进行解析漏洞。当然这个是在 fast cgi 开启的状态下的,我们可以看到这边是我打开了一个 n g x 的 外部容器,然后上传了一个 php info 等 jpg 的 图片,然后我们正常打开图片的时候是以呃文本的形式显示的, 而我们通过解析漏洞,就是在这个文件后面加了一个斜杠点 php, 它就可以当成了 php 来执行。 接下来就是 n g x 和 r 八 g 的 解析漏洞, n g x 小 于八点零三的空字节代码执行漏洞。当然这个是在 f c 加关闭下还是有的。 在文件的路径如叉叉点 j p g 后面加上百分号零零点 p h p 就是 形形如斜杠叉叉点 j p g 就是 这个文件,然后后面加了百分号零零点 p h p, 这样的文件就会解析成 p h p 文件。 而阿帕奇的解析漏洞是阿帕奇以 model 模模式结合的。 php 存在解析漏洞,阿帕奇是从右往左开始解析的,如果遇到 不可识别的,那就不解析,然后再往左判断左边左边一个是阿巴奇可以解析的,那么这它它就当成可以解析的文件来进行执行。最后一个是 c v e 二零一三四五四七的 n g 解析漏洞, 就是上传一个叉叉点 jpg, 在 后面跟上一个空格写杠零点 php 这种文件名的时候,上传之后还是会当成 php 来执行的, 我们来进行验证一下。解析漏洞, 打开服务器配置键环境,大家要学会搭建各种 i s 的 oppo 七原接口的服务器环境, 可以使用一键环境。先把它关掉, 先打开 i s 的, 于是,嗯,进去有个点位,于是 s b s p 的 执行,打开 m, 这是默认是可以执行的。再来看一下 目录解析文件,一个行如叉叉点 sp 的 目录,接接一个一点 sp 的 目录,我们来看一下, 这边本来就可以执行 sp 的 文件,我们来执行一下, 这是五百,嗯,支持,我来配置一下,我开一下服务器吧。 打开 s 八管理器, 我刚才又建了一个 up 六的目录,放了一个设点解 p 机,在一点 s b 的 目录下,也放了一个设点解 p 机。我们来看一下,在正常目录跟建了一个 一点 s p 这种叉叉点 s p 的 这种目录下,解析情况是不是不同?选了一个正常的, 我们发现它当成了一个图片来执行,就是左上角。 再来看一下一点 s p 这个目录图片,图片已经没有了,说明它已经当成 s p 来进行执行了,这就是它的目录解析。 接下来是文件名解析,就是后缀解析,就是常说的封号后面不解析的这个漏洞,再看这边 sp, 嗯,换一个正常的图片,就是没有封号点 jpg 的 这种来看一下, 它就当成了一个图片来执行, 我们把它改成形如叉叉点 jpg, 封号 后面跟上一个类似于叉叉点 s p 的 文件名,我们叉叉都不用接,点 s 接错了 s p 封号点解 p g 是 封号,后面的解析就是 不解析点 jpg, 然后就解析成设点 s p 来保存一下,看一下它这个在 windows 上面默认的显示为图片文件,但是我们打开看一下, 它已经当成 sp 的 脚管来执行了,说明封号后面不执行,这个节气漏洞也是可以成功利用的。最后一个就是它的默认节气漏洞, s p r s 默认可以支持 a s a g 这种,我们来再看一下,发现也是可以解析成 s p 文件的,而是不会没有解析成图片文件, 说明这三种情况都是可以成功执行的。进行解析。我们再来看一下 就是 linux 和 i s 七点零或者七点五的这个发射 c g i 模式下的 p g b 代码解析漏洞,调整一下环境,看一下 这里打开一键环境就行了, 你的版本按 住 s 先关掉,占用了八零端口, 我们已经打开了,看一下我的 compro 是 哪边,我们这边选了一个 p h p index 加 p h p j p 记本,我看一下它的内容改方式,用文本来打开它, 我们想让它执行 p h p 应用, 我们看它会不会进行解析成 p h p 代码来执行,还是以文本的格式来执行 excel, 我 们发现它还是当成了一个图片来进行执行, 那我们来看一下解析漏洞是什么情况,当成一个图,这是没有当成图片来执行,当成了文本来执行的, 这个看一下漏洞利用的情况是在后面加一个斜杠点 p h p, 就 会当成 p h p 代码来执行,我们来看一下, 可以看到它已经正确执行成了 p h p 音频的功能就是 p h p 代码的功能, 而且我们服务器上是没有这个目录的,而是一个这个这个文件,然后后面只是加了一个斜杠点 p h b, 它就会当成一个 p h b 来执行, 这个就是 r s 七点零七点五或者是 n x 的 解析漏洞来看一下 在关闭的状态下,我这边并没有并没有下载 mgx 的 这个环境,用的一键一键安装的环境,它是默认自带的这个 flash cgi 的 模式,我们可以直接知道, 就只是在这个上传的图片文件之后加上返回号零零点 p h b 之后就可以解析为 p h b 文件了。 还有最后一个就是在上传的时候拦截这个包之后在这个文件名后面加上一个空格,然后反斜杠零点 p h b, 之后就可以上传,之后解解析成 p h b 代码。 最后我们来看一下阿帕奇的解析漏洞,阿帕奇解析漏洞我这边已经安装了,然后先停止, 然后启动阿帕奇的, 然后打开, 我们来看一下阿帕奇的解析漏洞是什么情况,它就是在从右往左开始判断,形容这种一点 p h p 点叉叉叉点 a a a, 从右往左判断的时候,文件名右边第一个或者是 a a, 阿帕奇不认识,他往左开始判断,看是不是可以解析,判了之后发现还是不可以解析,再往左判断 p h p 之后他就确认是可以解析的,我们来看一下, 这边我直接写成叉叉叉看一下, 发现是无法解析的,当成了文本。而我们把它改成 p h p 的 时候,它会先判断叉叉叉这个有解析,解析不了,然后它往左判断,判断出一个 p h p, 它可以解析来看一下它的实际解析情况。 我们发现 php 的 input 代码照常可以执行了,说明它把这个一点 php 点叉叉叉这个文件当做了 php 文件来执行 解析漏洞就这样诞生了。 那最后呢,我给大家有两个习题, 第一个是在本地的虚拟机环境中搭建搭建 i s, 六点零啊,帕奇, n x 这些环境。第二个是 尝试各种不同解析漏洞的环境利用,就是复现我课程中讲的内容,同时完成我没有搭建的环境,再进行漏洞的复测。我没有搭建,搭建的环境是 n x 的, 不是以发射 c g i 模式来运行的。还有这个,这个大家回去之后一定要啊自己安装一下,然后测试一下到底是不是可以解析。 我们继续讲解客户端限制被绕过的情况,录入的成音主要是上传的文件仅经过 java script 的 验证, java script 的 验证呢,是客户本地的验证,仅客户端的验证是不安全的。下面这个代码是我从网上找的 找的 java script 的 验证代码来简单的看一下。这边主要是定义了一个函数, 然后得到文件名,判断是否为空,是或者是是否等于到了,如果是等于的话就是返回 force, 如果不等于的话就是继续执行下面代码。接着就是定义了允许上传的文件类型,假设是个字母串,点 jpg, 点 jpg, 点 gif, 点 gif 点 pdf, 主要是图片文件。 接着就是提取上传文件的类型,要通过两个函数,然后按点来取文件后缀,最后来拼成点叉叉叉,点叉叉叉这种格式。最后是判断上传文件类型是否允许上传, 如果是不在这个允许上传的文件类型中的话,就会是返回负一,负一等于负一的话就执行不允许上传,如果在这个里面的话,就会返回他的第一次出现的地,位置就是零到 某某某的地方就是允许上传。那么情况分析是这样的, 在这边是 js 上传的代码,然后点文件上传之后选择了一个 php 的 文件,点上传,发现弹出一个框,该文件不允许上传,就是当前文件类型为 php。 主要的验绕过验证的方法有以下四个,第一个是金庸 j s, 第二个是本地上传表单,第三个是 book suite 的 代理拦截,第四个是删除或添加 j s 代码。那么我们来看一下第一个金庸奖 script 代码, 直接打开浏览器 设置代码,我现在是没有进入 js, 来看一下,改成 上传一个 php, 看一下弹框说该文件不允许上传,就是文件类型是点 php 的, 那我现在修改一下进入 js, 每个浏览器与 gs 的 方法不一样,大家可以到网上搜索一下,不允许任何网站运行 java script。 选中之后我们重新刷新一下再选择。先来看一下 服务器上面是 g g s 的, 我们现在再来上传文件,上传成功,保存你当前文件夹下的一点 php 来看一下,其实在这边已经上传成功了,就当前文件夹嘛, 这是第一种绕过方法。再来看一下第二种构建本地上传的表单,主要是不通过网站给的上传空格文件,本地构建了一个上传的表单, 来绕过本地的 javascript 验证。我们来看一下代码,看一下主要是一个父母表单的, 大家懂得一点 html 代码知识的话,这个是很容易看得到。提交到这个地址啊 pos 的 方法,然后选择文件,提交到哪个文件就是提交按钮, 现在先把 javascript 还原, 你再来打开选择文件,这时候直接选择 p h p 就 行了。嗯,这边这里加 zero 也是运行的,你点上传文件,上传成功,保存一点 p h p, 我 们现在刚才没有删除,我们现在删除一下,重新上传一次, 点上传一键上传成功,这就是我们通过第二种办法上传过来的一点 p h b。 那 么 通过第三种 boss 的 代理拦截,然后本地限制,你先看一下代理,然后打开 接受刷新一下, 先把它改成图片, 打开这里选择文件,选择这个图片文件,确认已经开启状态,然后点上传,已经拿到包了,发送到 replay 的 里面, 现在就可以修改后缀了,因为它已经通过 javascript 的 验证了,那么接下来的就是没有验证了,我们就可以直接上传修改一个名字。二点 p h p, 我 们可以发现在这里是无法显示,那么这个应该是文件上传成功,保存于当前目录下的二点 p h p。 到服务器上看一下, 可以看到我们的文件已经上传成功了,现在就丢弃这个包, 关闭代理。说明前三种方法都可以通过本地的 java 验证, 我们修复方法就是在服务器后端对上传的文件进行验证,切记不要信任用户上传的任何文件, 那这是上传漏洞的第五节课。上传验证代码过滤不严格。漏洞的成因主要是因为程序员写代码的时候考虑不周全, 或者仅设置了黑名单,或者仅设置了白名单,或者目录参数传递可控,或者验证方式可以被绕过等等。 传统的验证手段,一是没有任何验证,二是 javascript 验证。三, m i m e 类型验证。四,后缀验证。五,文件内容的验证。 没有验证,直接接收从客户端上传的文件,无论它是不是恶意文件。我们来看一下代码, 我们从这边看一下代码,这边是接收提交过来的 action 值,放到 action 里面,判断是不是等于 submit, 然后取得 php 上传的文件名,然后直接移动文件保存到我们想要保存的那个目录里面,然后直接就直接就移动了,根本就没有进行任何判断。来看一下, 来看一下,直接上传一个图片是可以上传的,来上传一个开个名,上传一个 php 文件, 它也是可以上传的,说明它没有进行任何验证。我们到目录里面看一下,它直接传到当前目录了, 可以看到它这是一个图片文件本来,但是我们在最后面其实加了一个一句话木马,一句话木马已经解析了,我们可以通过菜单来连接看一下, 看到是可以直接连接的, 可以直接执行一些其他的命令,就是服务器环境没有什么配置,可以说是 system 权限。 接下来看一下加入 script 验证,加入 script 的 验证,请请看上传漏洞的第四节课,本地文件上传被绕过 m i m e 类型的验证,我们来看。先来看一下什么是 m i m e 类型, 它是一种用途,是互联网邮件扩展的类型, 是设定某种扩展名的文件用另一种程序来打开的方式类型,你到后面看一下,主要看一下这个,你就知道这种 点三二三的这种类型,它的 m i m a 类型就是这个最主要的,我们来看一下 p h p r s p c e r 这种, 我的图片呢,找一下这边 image 斜杠 j p e g j p e g 的 两个是一样的,什么 b b n p 下一个下一个,下一个,它的类型是啊, e m g 斜杠 b n p p n g e m g 斜杠 p n g p h p p 这边没有, 我们来看一下吧,看一下有有漏洞的文件是是是否设置了 这个 submeter 值,如果设置了之后是否存在这个,因为在前面已经定义了,说明这个是存在的,然后才会进到这个里面的判断,如果没有的话,就直接跳出啊,文件类型不正确,或者说文件夹不存在 这个,这里面的判断就是通过文件上传之后,这个文件流的里面的 tab 值里面存了一个它的 m i m e 类型,就是一米几斜杠 g i f 啊,一米几斜杠 g p e g 斜杠 p n g 一 米几斜杠 b m p 的 这种类型。然后呢,如果判断成功之后就可以直接移动文件,那么这个一米几类型是可以进行伪造的。来看一下 这是 php 的 文件,让我们先把它改成 jpg jpg 文件我们通过 word 来上传, 打开第五节课的 m i m 类型, 你直接上传,你直接上传 p g p。 先来看一下 文件类型不正确,请重新上传,那么我们再把它改成 j p g 的 再来上传, 虽然这个时候你你会发现上传之后它它的文件会变成 jpg, 那 么我们不可以进行解析,怎么办呢?你可以打开打开这个 刚才被我关掉了。 open switch 打开, 因为我们可以看到 在码里面只是验证了 m i m e 类型,并没有验证后缀啊之类的,我们可以通过修改 m i m e 类型来达到绕过的目的。 已经拦截到他的数据包了,放在了 repeat 里面,可以看到 m i m e 的 类型就是一密级的一密级斜杠 j p g 码,那么我们现在 可以把它改成 p g p 的 文件,但是它的 m i m e 类型还是一密接斜杠接 p e g 的, 那么它就是可以绕过的它,它在判断这个的时候是成功判断的,然后保存文件的时候还是保存了这个文件名,我们来看一下,我们可以看到这边应该是文件成功上传,保存到了 upload 斜杠 test, 点 p g p 的 录像 来打开服务器看一下。 打开目录,打开第五节课 of load, 可以 发现 test 等 php 已经上传上来了, 这个 test 等 php 是 在你先把这个放哦 drop 调整掉。 第五个的 upload test 等 ppt 可以 看到它是当成 ppt 解析的,但本来它是图片,所以说它无法解析,只能把它以文本的格式显示出来,用裁剪器进行连接,看一下 也是可以连接的一条默认的,这就是我们刚才上传的文件,我们再来看一下 后缀的验证,那看一下代码,这里面前面跟刚才一样,主要这里面定义了一个 拒绝的,拒绝的文件后缀,点 sp, 点 php, 点 spx, 点 jb jsp 这边,然后判断是这个,就是说我们上传的文件的后缀是否是不是在这个后缀里面,如果在的话就不允许这个,不允许执行这个, 而不在的话就可以执行文件上传功能,我们可以通过,嗯,因为只是检检测了后缀嘛。我们可以通过其他的方式 logo, 大家,大家想有其他方式吗? 可以配合解析漏洞,想一想我们可以,我们可以设计一个这种文件名, 他说是不能不能包含点 p h b, 我 们可以看一下这个时候他会验证后退的时候发现他是点 p h b 的,是不可以不可以上传的,但是我们改成不是 不是点 p h b 的,是点叉叉叉的格式,我们来上传看一下 这个直接关掉或者验证点叉叉叉,发现是可以成功上传的,我们打开这个文件 发现也是可以正常解析的, 这个就利用到了我们上一节课讲的上上节课讲的节气漏洞,我们来看一下是不是可以正常连接,我们选择搅拌类型, 发现是可以被正常连接的,这这步我们就配合了解析漏洞来达到文件上传的目的。 如果是 r s 的 r s 的 话,我们可以设计一个这种文件名, a s p 封号就 p g 这种 利用解析漏洞来执行,当然你当然你这个里面应该是放的是 s p 的 蛋,所以说 需要有 i r s 环境的支持,我这里面使用的阿华奇的环境,所以我们只用的是 p h b 的 代码。接下来我们再看一下 文件内容的验证,这里面的代码我们可以看到里面使用了 get 页面级的 size 这个函数来检测,这个函数呢会判断文件是否是一个有效的图片文件,如果不是就会报错了,那么我们可以通过文件头来欺骗来绕过这个检测 一套七遍呢。主要是我们可以看到这是从网上下的一个普通的文件,普通的 jpg 图片,我们在这边是它的箭头,我们在最后也添加了 我们需要执行的 pgp 代码,还是把它写为 pgp, 虽然它现在是打不开,但是在 pgp 的 任务 get image size 认为它是一个图片文件,我们可以打开看一下 内容,选择 test 点 p h b, 改个名吧,一二三, 我们点上传,发现这个已经成功上传,保存的目录是这个, 我们来看一下,而且也是可以成功解析的,你要把它解析成图片这种格式,当然 用插头也是可以连接的,可以看一下进行一些其他的命令啊。再进行 第一个,我们看一下漏洞的成因,主要是程序员在编写上传验证代码时考虑的不是很周全,过滤不严格,主要造成了编辑器也同样存在上传漏洞。 编辑器的种类从右边我们可以看到网络上开源编辑器还是比较多的,那么这里主要讲解一下 you web edit, f ck edit can edit。 第一个我们看一下 url edit 的 漏洞,左左边我们可以看到这款编辑器存在的漏洞还是比较多的,那么我们这里主要讲解一下上传漏洞, 上传漏洞主要是通过样式管理,新增样式,添加可以上传文件类型,最后通过预览,然后上传文件。我们实验一下 登录,通过样式管理,新增样式,添加一个样式, 这里通过添加图片类型,添加一些可以执行的脚本, s p 啊 c e r c d x 这里 a s p s p 主要是通过它会有过滤的时候, s p 过滤为空格,或者过滤为空的时候还会留下一个 a s p, 我 们提交, 然后添加工具栏,添加一个按钮, 插入或修改图片保存设置。通过预览的方式,我们可以看到这边有一个图片,但是这边无法进行,点击 url edit 对 浏览器支持不是很好,我们这里通过 i e test 来进行浏览, 新建一个 i e 六,打开登录一下, 这边我可以看到已经可以打开了选择图片,我们这里就可以直接进行选择 a s p 的 图片,因为我们在后面后端已经设置了可以上传 a s p 的 文件, 选择 a s p 的 确定,我们可以看到图片已经上传成功了,但这不是一个正确的图片,所以显示了一个叉,我们可以点击代码,可以看到这个图片的完整的上传地址。我们打开 这里已经进行了 a s p 的 解析,我们通过菜单管理 添加,我们可以看到可以正确的管理网站服务器了。 这个完整的漏洞复现过程就是 you already 的 上传漏洞了,主要是样式管理,新增样式,图片,添加可以上传的类型,然后预览之后上传文件。 接下来我们讲解一下 fckad 的 漏洞,从左边我们可以看到 fckad 的 也是存在比较多的漏洞,这里也仅介绍上传漏洞,以主要是配合上传页面,然后再结合解析漏洞拿下权限。我们来实验一下, 我们可以通过下文件 what's new? 点 html 看一下 fck 的 版本,这里显示的是二点四点二的, 这里显示的是二点六点六的,我们先来看一下比较低的版本, 这就是上传页面,我们可以看一下 get folders and files 查看目录和文件,这里点已经看不见,我们换一个浏览器,用一下火狐, 可以看到火护,可以粘贴执行。我先来添加一个 s p 文件,看一下 invalid file 不 允许上传, 那我们再上传一个有解有解析漏洞的文件, 不好意思,名字写错, 二点 a s p 封号点 j p g 点上传。上传成功了,我们到服务器上看一下, 可以看到图片已经正确上传了。 接下来我们通过菜单进行连接一下 地址格式, 可以看到解析漏洞是可以拿下服务器权限的, 我们还可以看到这边有一个 file folder, 就 创建目录的意思, 因为这个版本是 rs 六点零的。我们可以想到通过解析漏洞来拿下服务器,通过创建一个叉叉点 s p 的 目录,看一下可不可以创建, 可以看到一点 s p 已经创建成功了,我们在一点 s p 里面来上传一个,直接上传一个图片文件,通过目录解析拿下权限, 可以看到二点 j p g 已经上传成功了, 通过目录解析也是可以拿下,那么低版本跟高版本有什么区别?我们来看一下, 我们直接上传一个具有解析漏洞的 改个名字, 我们可以看到我们上传的三点 s p 封号点 j p g 已经变成了三下黄降 s p 封号点 j p g。 这是一个图片文件,而不是可以解析成 s p 的 文件, 我们是不可以进行连接的,那么这再来试一下,通过创建目目录的方式来解析图片文件,一个二点 s p 确认, 我们可以看到我们创建的二点 a s p 也经也已经变成了二下划线 a s p。 那 么我们该怎么绕过点变下划线的这个限制呢?这里我给出通过代理的拦截方式 创建目录四点 a s p 确认已经拦截了,发送到 repeat 里面, 我们可以看到 new folder name 就是 新创建的文件名,而 current folder 就是 当前目录百分之二 f 就是 斜杠的意思, 我们可以通过在当前目录下添加一个五点 a a s p, 这个目录 f c k 就 会确认是否有五点 s p, 如果没有五点 s p 的 话,它会自动创建一个五点 s p, 然后在五点 s p 之下创建一个四点 s p, 我 们来看一下, 我们可以看到五点 s p 已经创建成功了,而在五点 s p 里面创建了四点 s p 没有创建成功,变成了四下滑线 s p。 当然我们就可以通过在五点 s p 里面上传一个图片文件来进行解析,我们来试一下 切换为图片文件 代理没有关 上传成功,我们可以看到在五点 s p 目录下已经创建了五 j p g, 我们来连接一下, 可以看到高版本的也是可以通过创建解析目录来完成上传漏洞。 f、 c、 k 的 上传漏洞主要还是上传页面配合解析漏洞拿下权限, 其他的编辑器。由于网络上开源的编辑器实在是比较多,我们不可能一一讲解,那么我们就可以看一下,在网络上已经有人整理了一份文档,可以看一下。这边有比较多的编辑器, 有远程文件上传漏洞,本地文件包含目录,便利 rs 解析漏洞, 那么其他的编辑器主要也是有上传漏洞的,还是得配合解析漏洞才能拿下权限 修复的方法。如果最新版编辑器已经不存在漏洞,那么更新编辑器的版本就可以解决,而如果最新版本还是。