Pikachu靶场通关记录(一)
综合性靶场,方便整体复习,直接开搞
1.暴力破解
1.1 基于表单的暴力破解

测试,直接bp抓包,放intruder模块爆破,搞个字典直接进去爆,看返回长度判断
得知为admin和123456,成功登录
1.2 验证码绕过(on server)
验证码的生成代码写在了前端,因此只需要正确输入验证码后再抓包,然后把验证码参数去掉就行了
(lz是直接把抓到的包丢到intruder模块也成功了,没有删除验证码的参数)


抓包,爆破,跟1.1相同
1.3验证码绕过(on client)
争对后台不刷新验证码的情况,抓到包后不要放,该验证码就会一直有效

跟1.2相同的步骤,成功登录
1.3 token防爆破?

抓包时发现参数中多了一个token
![]()
继续爆破,仍然成功登录。
有点懵,感觉不对劲,再爆一次

有趣,居然失败了,看来要学到新知识了
----------------------------------------------------
token相当于个一次性的令牌,客户端需要携带token通关服务端的验证。
可以简单理解为每一次请求的时候都产生了一个随机数,并且需要携带这个正确的随机数才能通过验证
那应该去哪儿找这个“随机数”呢?而且每次都不一样,即每次都需要从某处拿到更新后的“随机数”
bp里恰好就有这个功能,叫 递归提取(Recursive grep,递归grep载荷)
该方法会用上一次 HTTP 响应的正则提取结果,作为下一次请求的 Payload,请求前后存在依赖关系
因此爆破时需要选择Pitchfork鱼叉攻击的方式
通过图示过程得到http相应结果,即"随机数"

有两个地方需要注意,一是该页面最下方的重定向需要设定为always

二是最大线程数需要设置为1

然后开爆

成功登录。
第一次成功的原因是在我的字典里,正确的密码放在了第一个,正好满足了(ˉ▽ˉ;)...
关于该题更加详细的解答可以参考:
bp英文界面可以参考:
2. Cross-Site Scripting(XSS)
夹带私货!!
关于xss-labs-master靶场的通关记录可以参考lz的另外两篇帖子(●'◡'●)
以及
2.1 反射型xss(get)

直接尝试标签法:
<script>alert(1)</script>
发现输入长度受限

xss作为一个纯前端的漏洞,直接尝试修改html源码中的长度
f12打开开发者模式,查找max字符

修改为40,再次尝试标签法,成功

2.2 反射型xss(post)
包含username和password,一眼就想用万能密码,但那是sql的内容了
尝试admin和123456,登陆成功,再用标签法<script>alert(1)</script>,成功弹窗
(??发生什么事了)
点开提示发现是要获取cookie,用户和密码是直接给了的。。。
重新来一遍
登录之后,通过payload
<script>alert(document.cookie)</script>
得到cookie

2.3 存储型xss
开局一个留言板,没有提示,直接尝试标签法
<script>alert(1)</script>
过关
2.4 DOM型xss-x
DOM型XSS(Document Object Model Cross-Site Scripting)是一种基于文档对象模型(DOM)的跨站脚本攻击类型。它通过在客户端操作DOM来实现恶意脚本的注入和执行,而无需与服务器进行交互。
标签法失效了,出现一个无用链接,但输入内容没有消失,f12查看代码并搜索alert(1)出现的位置

发现前面接的是href,即伪协议法,于是输入javascript:alert(1)>test</a>
发现test标签未生效,仍然采用的的是what do you see的标签,尝试javascript:alert(1)">test</a>手动闭合也没成功

还是老老实实用题目给的标签吧(ˉ▽ˉ;)...注入javascript:alert(1)后点击链接即出现弹窗

2.5 DOM型xss-x
注入上一题代码javascript:alert(1)出现一个链接,点击链接后出现了第二个链接
查看网页源码,直接搜出现的链接名称”就让往事都随风。。。。“
明白和上一题结构一致,注入javascript:alert(1)后点击后出现的标签即可出现弹窗

2.6 xss之盲打
源码中搜提交看看有没有线索
点开提示发现让我们登陆后台

登陆后台后发现是刚刚上传的信息

提示显示“被弹了吗”,说明后台是出发xss的地方,前面输入后面触发,看看代码
注入标签法<script>alert(1)</script>,成功实现弹窗
2.7 xss之过滤
标签法注入后未生效

发现内容只剩下一个>了,换个方法,既然内容会在下面显示出来,尝试用图片的形式让其触发
<img src=abc onerror=alert(1)>
解释:让浏览器去请求名为abc的图片文件,当文件不存在或报错时触发onerror中的代码
成功弹窗
2.8 xss之htmlspecialchars
看到名字就蒙了,搜一下
htmlspecialchars定义:将 HTML 中有语法意义的特殊符号转义为 HTML 实体字符,浏览器只会把转义后的内容当成纯文本渲染,不再解析成 HTML 标签、JS 事件,从输出层面防御反射型、存储型 XSS。
试试之前的payload:<script>alert(1)</script>
查看源码

href标签,直接配合格式注入javascript:alert(1)
成功弹窗
2.9 xss之href输出
与2.8的payload一致:javascript:alert(1)
实现弹窗
2.10 xss之js输出
提示让输入tmac试试,弹出一张图片

无语,好像是整活的,注入payload:<script>alert(1)</script>,去代码里找找出现在哪儿了

确实是个整活的(ˉ▽ˉ;)...。看来是标签闭合的问题,要先把前半个script闭合了
尝试根据原格式构造对应payload:
</script><script>alert(1)</script>
成功弹窗
3.CSRF
csrf(Cross-Site Request Forgery)跨站请求伪造
攻击者诱导你在已登录目标网站的浏览器,在不知情的情况下自动发起非自愿请求,利用你的登录身份执行操作。
核心本质:浏览器会自动带上目标站点的 Cookie、登录凭证,网站只校验 “请求带了登录 Cookie”,没验证这个请求是不是用户本人主动发起。
3.1 CSRF(get)
提示中告知一些账号,直接登录


修改个人信息,该点然后bp抓包

利用bp自带的模块生成CSRF的攻击载荷,先在proxy中的intercept模块中选择action,

然后修改成自己想改的内容

生成后将链接打开,提交请求后发现内容已经成功修改

3.2 CSRF(post)
仅仅传参方式不同,步骤与3.1完全一致
3.3 CSRF(Token)
跟前面token防爆破原理是一样的
但是在bp的csrf模块里怎么拿到更新后的token呢?
lz尝试用之前的方式,即把包发去爆破模块,在那里拿到新的token后再手动替换
但失败了,猜测是在生成csrf网页时也产生了新的token。
看看别的大神们怎么做的。。。。
发现其他帖子里提到该机制无法绕过?!好像还是真的。。。
话虽如此,但在一通寻找后lz还是在一位大佬的帖子中发现提到可以用bp中的CSRF插件CSRF Token Tracker 来绕过
尝试一下。

插件配置如图

其中value的值为从网页代码中复制的token
然后在抓的包中修改参数,全部改为token,发包,居然成功了(装插件前直接修改包中的内容是不会成功的,说明后台会对token进行校验)

因为CSRF Token Tracker会自动识别到的Token值,之后每次提交的重放都会自动识别并填充token值来实现绕过的目的
继续深入发现intruder也能实现,尝试一下居然也成功了!不过需要设置第二个变量,才能有具体的爆破次数,
这里随便设置一个要修改的变量内容就行了

依旧还是那两个注意点,一是重定向选为总是,二是最大并发数改为1


这里第一个元素设置的从1到10,第二个就是递归提取(Recursive grep,递归grep载荷)详细见前面1.3节
最后的结果是10,即每一次都修改成功了o(* ̄▽ ̄*)ブ


第一部分包含前三节(暴力破解,XSS和CSRF)的记录
浙公网安备 33010602011771号