暴力破解简单概述
点开基于表单的暴力破解,像我们日常登录的用户密码
我们简单输入admin,admin,错误提示
输入admin,123456,成功提示
然后我们用工具,burpsuite进行爆破,先设置代理
设置为手动代理,填上127.0.0.1(这是本地IP),端口8080(对应burpsuite的端口),点击确认
打开工具,在代理中选择拦截请求
在页面中填入admin,admin,然后点击Login
抓到POST的包了,然后右击发送给Intruder
然后在测试区中点击位置,在右边点击清除,然后选中username中的admin和password中的admin(即是我们要爆破的账号密码),攻击类型选择最后一个
在本地添加两个文件username.txt和password.txt相对应用户名和密码(里面要有对的账号和对的密码才能爆破成功)
把账号和密码加载进去
在桌面中的username.txt
然后加载password.txt
最后在选项中右边选择开始攻击
看到结果了,长度唯一的就是正确的账号和密码,然后把爆破成功的账号密码登录进去就可以了
OK接着我们点开下一题,验证码绕过,加了个验证码嘛
和之前一样浏览器加上代理,burpsuite拦截请求,这次不是发送给测试器了,发给Repeater(重发器)
来到重发器,点击发送
把响应这边的拖动条拖到最后,可以看到用户名或密码错误,再发送一次同意是账号密码错误,接着我们把验证码修改了发送就可以看到验证码错误了
这说明是验证码无条件不刷新,无条件不刷新是指在某一时间段内,无论登录失败多少次,只要不刷新页面,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。
接着我们回到代理这里,然后把内容发送测试器,像之前一样,在测试器里面把全部清楚了,再把账号密码处添加上,攻击类型第四个,把账号密码的文本加载进去,最后攻击。
长度唯一的就你了
下一关
弹框,那就是javascript验证验证码了,burpsuite轻松绕过,抓包->爆破>登录即可
Next token防爆破
第一步还是抓取一个请求包,
此处多出了一个token变量选项 token变量如何来的?多半和返回包有关
通过对返回包的分析,我们发现token由返回包确定,显然了,每次我们登陆,token的值肯定会变化,token值错误无法验证账号密码的正确性,需要我们每一次发送请求包都要拿到上一个返回包的token值放在token包里面
那我们要怎么做到呢?把包发送到测试器中,选择第三个选项
线程设置为1(只有获取上一个请求返回的token值才能,做下一次请求,无法并发)
选项中的线程数为1
在选项下面的Grep Extract点添加,获得回复,选中token的值复制然后确认
最下面选中总是
在有效载荷中选择递归搜索,然后把值放在第一个请求的初始有效负载
加载字典后攻击
唯一的长度没错了
第一关
好像限制了能输入的长度,提交一下
我们输入的好像在上面啊,上面就不会限制了吧,上面修改下
成功
next
登录框不能弄出xss,登录进去有个登录框,直接打出xss代码,成功
next
留言框,直接上xss代码,刷新一下就能弹出来了。这里为什么要刷新呢,因为存储型xss是保存在数据库里的,刷新之后,留言列表从数据库提取出xss数据所以会弹框,存的好会一直弹出来
next
DOM型xss
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式
点击试试
好像不行
右击审查元素看看
我们要做的事被做成超链接了,我们把他闭合下,构成domxss。
onclick 事件会在对象被点击时发生,然后弹出我们的xss
Next
我们还是看看审查元素
我们输入的参数哪去了,点进去看看
又看见一超链接,审查元素看看,我们输入的参数跑这里去了,咋一看和上次还是差不多
直接闭合,然后点击它,成功
Next
XSS盲打简单来说,盲打就是在一切可能的地方尽可能多的提交xss语句,然后看哪一条会被执行,就能获取管理员的cooike,就是不知道后台不知道有没有xss存在的情况下,不顾一切的输入xss代码在留言啊,反馈啊之类的地方,尽可能多的尝试xss的语句与语句的存在方式,就叫盲打
提交上去好像没回显
估计是上传到后台去了,看看小贴士
登录进去看看有没有我们刚刚提交的xss代码
有了
Next
XSS绕过
大小写,比如:
拼凑:
Next
htmlspecialchars会过滤一些字符
输入了’”<>后审查元素发现它过滤掉了
输入'οnclick='alert(/xss/)'
结果当然是成功弹出窗口,我们可以得知,确实他使用了htmlspecialchars()函数对输入进行了转义,但是他使用的是默认方法,并没有转义单引号,仍然成功弹出
Next
我们还是按常理输出,然后点击查看查看元素发现,这次的输出是在href中,但是这次代码将双引号进行了过滤,是不是这样不能执行xss代码了呢,当然不是,输出在a标签里的href属性,可以使用js协议来执行js
我们输入javascript:alert(/xss/),可以看到没有任何过滤,成功弹窗
Next
查看发现,他将我们输入的字符存到了js代码里面然后进行判断,我们可以根据代码写一个闭合'
成功
开始了
首先我们在提示里面拿到账号密码,登录进去,修改个人信息,简单修改下信息,然后提交、
然后浏览器上代理,用burpsuite抓包
从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让vince点击就好,我们构造的URL中把地址add改为cn。kevin一点击就修改了地址。
/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18626545459&add=china&email=vince%40pikachu.cn&submit=submit
我们直接把这段代码复制在url中,确认一下,即可修改掉信息
Next
如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击
攻击者可以搭建一个站点,在站点上做一个表单,诱导vince点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。
编写一个post.html页面,代码如下所示,本文把此页面放到 的pikachu-master\vul\csrf\csrfpost下,然后启动 apache 服务
代码如下:
诱导用户点击网址,完成修改
www.tests.com/vul/csrf/csrfpost/post.html
完成修改
Next
CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求。
跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了,对于token,暂时还没有什么办法通过
所以,使用token是一个很好的防御CSRF攻击的方法。
直接开始
查询1,burpshuite抓包,把包发送到重放器里面
抓到包在id那里输入or 1=1# 能不能遍历
在右边单击render,然后再打开
可以看到都遍历出来了,说明有SQL注入
Next
从username判断,带入数据库查询的是字符串,构造语句为kobe' or 1=1#
遍历成功
Next
和上面的差别不大,这是用MYSQL的like模糊查询
Next
查询语句多了个括号嘛
管它的什么型,能够制造出闭合,就是本事,hh
Next
首先注册个账号,注册那里可能有漏洞
我们知道insert就是在数据库中添加数据
那么我们注册一个账号,是不是就是在数据库中添加了你的账号数据,那么我们可以在注册页面插入我们的注入语句,我们猜测后台的mysql语句应该是,insert into user(name,password,sex,phone,address1,address2) value('xxx',123,1,2,3,4)。那我们可以在xxx的位置构造我们的注入语句xxx' or updatexml(1,concat(0x7e,database()),0) or '
这是语句是错误爆出数据库名称
可以看到数据库名称是pikachu。
Next
既然是delete注入,那肯定是在删除这里
我们先简单留言下
打开burpsuite然后点击删除,抓到包后发送到重发器然后在56后面加上我们的语句
+or+updatexml(1,comcat(0x7e,database()),0)因为这里传的是数值型,我们就不用单引号闭合,直接or就行了,这样就完成了我们的注入
Next
登录进去后发现有些信息被插进数据库后查询出来了,也就是有注入了
有些时候,后台开发人员为了验证客户端头信息,比如常用的cookie验证,或者通过http请求头信息获取客户端的一些信息,比如useragent、accept字段等等,会对客户端的http请求头信息获取并使用sql进行处理,如果此时没有足够的安全考虑,则可能会导致基于http头的sql注入漏洞
首先抓包,然后发送到重发器
把 User-Agent 改为一个单引号,发包看看后台处理的结果,发现直接报了 SQL 语法错误
再把User-Agent后面跟上构造好的语句,爆出数据库
Next
用burp抓包,放在重发器
kobe' and ascii(substr(database(),1,1))=112#
即可爆出数据库
Next
时间盲注
时间盲注主要使用if语句,通过延迟信息进行判断,不看回显信息
右击审查元素
然后点击网络,再从上面提交上去,可以看到时间执行了5.12秒,说明有盲注
kobe' and if ((substr(database(),1,1))='a',sleep=(5),null)#
构造了另一条代码
此时1ms就返回结果,说明数据库名第一位不是a
将a改为p,则一直不返回结果
说明数据库名第一位不是a
Next
首先打开页面抓包,发送到重发器那里
把name的值修改成1%df' or 1=1#,点击发送然后在render中看到成功了
第一关
正常是ping127.0.0.1的,我们后面加上&whoami就执行whoami命令了
Next
eval函数危害性大,可以直接获取webshell
第一关,先随便点一个提交,可以看到url中的filename估计就是包含文件,我们修改下
我们在include文件中创建出1.txt文件
Next
这里要开启allow_url_include,在php.ini中设置成ON,然后重启一下服务器
我们还是随便点一个提交,然后看到filename应该就是你了,修改成http://www.test.com/2.txt
然后在另一个网站上创建好2.txt文件
访问成功
随便点开一个可以发现下载文件
浏览器上代理,打开burpsuite进行抓包,把filename修改成../down_nba.php,放包
下载完成后可以看其代码
../down_nba.php也就是上级目录下的down_nba.php文件
开始
直接上传php文件,然后被弹窗了,看的出来是javascript限制
审查元素,把onchange去掉,上传成功
Next
没有弹框了,应该是后台验证
上工具,代理、burpsuite、抓包,把Content-Type修改成image/jpg
既然它要图片的MIME类型,我们就给他
然后放包
成功
Next
Getimagesize返回文件大小和文件类型的,我们可以直接上传jpg文件
抓包,添加上代码,也就是在上传文件中添加上代码
返回文件,然后在之前的包含漏洞中跨目录把它包含进去就成功了
水行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息。A用户如果越权操作B用户个人信息的情况称为水行越权操作。
直接开始吧
在小贴士中找到了一些账号和密码,我们登录进去
点击查看个人信息,可以看到url中有个username,如果有水平越权漏洞就可以查看到别人的信息了,试试修改成lili
可以看到成功了
Next
垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。、
小贴士中看到了两个账号,一个是管理员账号一个是普通用户账号,登录进去可以看到
管理员还可以看到添加用户
这里我们要实现普通用户添加用户,也就是垂直越权
打开burpsuite抓包,把普通用户的cookie复制下来
再从管理员中添加一个账号,抓包
发送到重放器,接着我们把普通用户的cookie粘贴进去,发送
可以看到已经成功添加了xxxxxxx用户了
点击去看一下有个title,估计这就是目录遍历值了,修改成../dir.php上级目录下的dir.php
成功
首先查看源代码,可以发现测试账号密码是可以直接登录进去的
直接在上面输入abc.php也可以直接进去
看一下页面,接受反序列化,打开源码文件看看它反序列化什么
也就是把我们传进去的东西进行序列化
我们先在本地直接搭建一个序列化的内容,在浏览器访问它
查看当前页面的源代码,可以看到我们构造好的代码复制,再把它放进我们的题目中即可
成功
序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:
class S{
var $test = "";
}
$a = new S();
echo serialize($a);
?>
序列化后得到的结果是这个样子的O:1:"S":1:{s:4:"test";s:29:"";}
O:代表object
1:代表对象名字长度为一个字符
S:对象的名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称的长度
test:变量名称
s:数据类型
7:变量值的长度
:变量值
第一关
Xxe既"xml外部实体注入漏洞"。
它是接收xml数据的接口,那我们先了解下xml是什么
XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储
第一部分:XML声明部分
第二部分:文档类型定义 DTD
第三部分:文档元素
我们提交代码为
]>
当然也可以这样,也就是用base64加密打开文件,然后解密即可看到文件里面的内容
]>
看到有一些超链接,我们都点一遍可以发现,最后一个好像有个url的值,我们修改成https://www.baidu.com/,可以发现它跳转成https://www.baidu.com/页面了
累了来一首吧,假如生活欺骗了你..
看到这个url没有,估计就是这个url导致的跳转,我们输入https://www.baidu.com可以发现百度过来了
看看源码,它是获取我们的url然后进行curl操作,中间没有任何的过滤,导致的
Next
我们把file修改成
php://filter/read=convert.base64-encode/resource=http://www.tests.com/vul/ssrf/ssrf_info/info2.php可以看到成功把http://www.tests.com/vul/ssrf/ssrf_info/info2.php的info2.php文件用base64包含进来了,接下来我们把这段加密代码拿去解密即可,当然是可以任意文件读取,修改下地址即可
成功过关