靶场搭建
docker搭建
docker pull area39/pikachu
docker run -itd -p 80:80 -p 3306:3306 --name “p1” area39/pikachu
暴力破解
基于表单的暴力破解
直接bp抓包,账号是admin,密码为常见弱口令就好了。
验证码绕过(on server)
bp抓包,发现用intruder爆破的时候,验证码不改变也不影响爆破,忽略验证码直接爆破就好。
验证码绕过(on client)
bp抓包,把验证码删掉,直接爆破就好。
token防爆破?
首先了解一下什么是token。token是一种防爆破的方式,他通过在输入账号密码是生成一个token,当进行账号密码验证时就会和其一起进行验证,且如果token没有验证过的话是无法登陆的,而且每次刷新都会生成新的token。用这样的方式来进行防止和预防暴力破解。
token每次刷新都会不一样。
其实token是无法防止爆破的。因为token能够在前端找到,攻击者完全可以在每次攻击之前通过工具来进行获取token这样token的作用就发挥不出来了
那么如何爆破呢?
来到intruder的option模块,使用Grep - Extract来提取页面中的token值
设置为always
将线程设置为1
设置密码,第一个payload选择弱密码字典,第二课payload也就是token字段选择Recursive grep,如下
也可以填写Grep-Match,当在相应包中发现指定信息时,就会标识出来。
这下直接爆破就可以了
可以看到爆破成功了。
XSS
反射型xss(get)
首先随便输入个啥内容,比如666,观察666是否出现在页面中。
输入框下面出现了666,然后输入XSSpayload,比如
<script>alert(1)</script>
发现有输入长度限制,直接F12修改HTML源码,去掉长度限制。
接着输入payload之后就出现了弹框。
观察URL发现,payload在里面,就像下面这样:
http://192.168.21.130/vul/xss/xss_reflected_get.php?message=<script>alert(1)</script>&submit=submit
这样就可以通过恶意连接的方式去进行攻击。
反射性xss(post)
刚进去像下面这样,是一个登录框
输入admin/123456登陆进去,就会出现一个搜索框
我们像上一关那样先输入个666,看666是否出现在页面中。
然后直接插入payload,输入之后直接弹窗了,没有进行过滤
存储型xss
登进去是一个留言板,输入666会存储在页面中。
接着输入
<script>alert(1)</script>
,直接弹框,也是啥都没有过滤
而且每次访问都会弹框,这是存储型XSS。
DOM型xss
直接输入
<script>alert(1)</script>
,发现没有弹框,审查元素看是哪里出了问题
原来是payload写到了href属性里面,接着就去改payload,payload如下:
'><img src="#" onmouseover="alert('xss')">
接着再去审查元素
当鼠标经过图片时,就会弹框
DOM型xss-x
先输入666试探一下,看在页面中是否有输出
没有找到,搜索结果是CSS代码,应该不是。
然后我们点击
有些费尽心机想要忘记的事情,后来真的就忘掉了
,再看看有没有
找到了,这和上一关很像,就是要点击一下那串字。
首先输入上一关的payload:
'><img src="#" onmouseover="alert('xss')">
,再点一下那串字,就写进去了。
鼠标经过时就会弹框
xss之盲打
刚进去的时候提示输入一些看法和姓名,这个内容不在前端显示,可能会发送到后台,后台管理员登陆后台之后,攻击代码就会执行。
输入常规的payload:
<script>alert(/xss/)</script>
。
输入之后提示可能发送到后台管理页面,最后我们登陆后台管理地址。
后台地址是
/xssblind/admin_login.php
,输入密码admin/123456,登录即可触发XSS。
XSS之过滤
首先输入666,看在页面上是否显示,可以看到下面这样
接下来输入XSSpayload:
<script>alert(/xss/)</script>
发现过滤得只剩
>
,可以尝试大小写绕过:
<SCRIPT>alert(/xss/)</sCRIpt>
当script为过滤关键词时,可以尝试其他的payload,如
<img src=x onmouseover="alert(/xss/)">
<img src=x onerror="alert(/xss/)">
发现成功弹窗。
xss之htmlspecialchars
在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体。
直接输入典型payload,页面显示如下
在输入框输入
' "<>666
,然后查看页面源代码,如下:
发现单引号没有被实体化,所以使用如下payload:
#' onclick='alert(/xss/)
点击就会弹框。
xss之href输出
输入666,查看页面源代码
发现写在了href中,输入测试代码#
' onclick='alert(/xss/)
,查看前端源码,发现单引号被实体化了,妈的,没有用了
可以使用javascript协议来执行js,可以尝试使用伪协议绕过。尝试payload:
javascript:alert(/xss/)
,点击即可触发弹窗。
xss之js输出
输入框中输入666,显示如下
查看网页源代码,看有没有666这三个字,发现写在了javascript标签内。
输入的代码被生成在js中并赋值给$ms。我们的输入被带入到js中,可以闭合,payload如下:
</script><script>alert(/xss/)</script> ';alert(1);//
CSRF
CSRF(get)
使用vince/123456登陆,点击修改个人信息,界面如下
修改信息,然后进行抓包
生成csrfPOC,然后将POC保存为html,用处于登陆状态的浏览器打开
发现配置信息修改成功。
其实get型CSRF可以修改URL,就可以生效。
CSRF(post)
这个方式和上一关一样,就不再写了。
CSRF Token
抓修改信息的包,发现有token字段
这个就没招了,除非你把受害者的token偷过来。
SQL注入
数字型注入
打开界面如下
直接抓包
放到repeater里面,对id参数进行测试,发现有注入
直接进行普通的联合查询注入就可以,没啥好写的了。
字符型注入
输入
1'
,看页面有啥反应没
存在注入,直接常规注入就好
搜索型注入
搜索型注入是出现在搜索框处的注入。
搜索型源码一般是
select … from … like '%xxx%'
,xxx是我们输入的值
尝试输入% (通配符表示所有)
版权归原作者 只会打靶场的小菜鸟 所有, 如有侵权,请联系我们删除。