pikachu 靶场通关(全)

一.暴力破解

1.1基于表单的暴力破解

1.1.1 漏洞利用

burp抓包,ctrl+i 添加爆破

根据返回长度得到两个用户

admin 123456

test abc123

1.1.2 源代码分析

文件路径在:vul/burteforce/bf_form.php

通过注释以及说明了,没有验证码也没有其他的访问控制,直接开始爆破就行

1.2 验证码绕过(on server)

1.2.1 漏洞利用

比上面多了一个验证码,我们在提交时抓包,然后ctrl+r 重放,多点击几次send 然后看返回结果

发现同一个验证码我们重复使用了多次,返回的结果时用户名或密码错误,并没有提示验证码失效,也就是只要我们这个页面不刷新,就可以一直用这个验证码,那就跟第一关一样,直接ctrl+i拿去爆破,得到了跟上面一样的用户名跟密码

分别是 admin 123456

test abc123

1.2.2 源代码分析

文件路径在:vul/burteforce/bf_server.php

关键点在于36行,注释也以及硕明白了,在验证完成后并没有销毁掉session[‘vcode’],导致了我们可以一直重复利用改验证码

1.3 验证码绕过(on client)

1.3.1 漏洞利用

输入验证码后,这提示也太快了把,点击后就立马弹出了错误,打开f12再试一次,果然,根本就没有发起http请求,验证码来自于前端的js,难怪这么快

burp抓包验证下 将验证码的vcode参数置空

发现提示的是用户名或密码错误,没有校验验证码参数,那么直接开始爆破即可

1.3.2 源代码分析

文件路径:就在当前页面

F12查看源代码,果然是前端生成的验证码,服务器并不校验

1.4 token防爆破

1.4.1 漏洞利用

这里抓包可以看到多了个token,并且重放无法继续利用

经过查找发现是在密码输入框的下方多一个隐藏的输入框,记录的是token的信息,那么直接拿去burp上开始爆破![](https://img-
blog.csdnimg.cn/11277eabf30b4032a7668fe7cb603904.png)

ctrl+i 发送到爆破

模式选择 pitchfork 勾选两个参数,一个是密码,一个是token

密码选项加载密码字典,token选项选择 Recursive grep

然后来到设置选项 勾选跟随重定向,然后点击正则的 Add

鼠标选中token的值,burp会自动生成正则表达式,不用自己手动输,点击ok

线程选项要更改一下, 设为单线程,然后直接开始爆破

发现每次爆破的自动带入了当前页面的token,依旧根据长度判断

爆破成功,得到 admin的密码为123456

1.4.2 源代码分析

文件路径在 vul/burteforce/bf_token.php

在文件的63行设置了token

跟进函数,函数每次调用前都会检查当前session是否有token参数,有的话会先删除掉这个token再重新生成并保存到session中,也就无法重复利用了

二:Cross-Site Scripting(xss)

概述:Cross-Site Scripting的简写css与前端的css重名了,所以称之为xss

2.1 反射型xss(get)

2.1.1 反射型xss(get)漏洞利用

输入到一半发现有字符长度限制,f12打开,将20个长度的限制加大

输入

成功弹窗

2.1.2 源码分析

文件路径 vul/xss/xss_reflected_get.php

直接接受我们get请求传递上来的内容未经任何过滤直接输出,导致了xss

2.2 反射型xss(post)

2.2.1 漏洞利用

这里首先是一个登录框,直接根据我们上面爆破到的用户名跟密码登录即可

我这里用 admin 123456

也是没有任何过滤,直接在输入框输入payload就行

2.2.2 源码分析

文件路径:vul/xss/xsspost/xss_reflected_post.php

这里与上面一关唯一不同的就是传递的方式有GET转为了POST,同样也是无任何过滤直接返回到前端

2.3 存储型xss

2.3.1 漏洞利用

也是无任何过滤,直接输入 payload

<img src=1 οnerrοr=alert1>

2.3.2 源码分析

vul/xss/xss_stored.php

也是无任何过滤,与前面不同的是这次将值传入了数据库,然后从数据库取值

2.4 dom型xss

这里是将传递的值当作了标签的href属性,插入payload javascript:alert1

2.5 DOM型xss-x

依旧使用javascript伪协议

javascript:alert1

2.6 xss之盲打

直接插入payload <svg οnlοad=alert1>

后台的地址为
locaohost/vul/xss//xssblind/admin.php

2.7 xss之过滤

payload "><svg οnlοad=alert1>

2.8 xss之htmlspecialchars

这个函数会过滤简括含号,但是我们的输出点是在a标签的href属性当中,直接使用伪协议即可

payload : javascript:alert1

还有就是htmlspcialchars 默认不对单引号过滤 也可以使用 ’

payload : ’ οnclick=‘alert1

2.9 xss之href输出

payload : javascript:alert1

2.10 xss之js输出

这次的输出点在js上面,闭合掉前面的js,再插入代码

payload :

三:csrf

3.1 CSRF(get) CSRF(post)

在修改内容包的页面 engagement tools -> generte csrf poc

自动生成一个csrf的html文件,放到浏览器即可触发

token csrf 目前没搞定

token在页面内容,想的是ajax先获取到页面token,将token替换再次发送一个csrf,但是ajax没法跨域,网上搜了token也是防止csrf的一种方式

四: SQL-Inject

4.1 数字型注入(post) 手工注入

是一个下拉菜单,无法通过浏览器修改内容,那上burp

输入单引号 页面报错,那么可能存在sql注入

id=1 页面返回内容

id=2 页面返回不一样的内容

id=2-1 页面返回跟页面1一样的内容,说明后端执行了2-1,所以返回了id=1的内容,判断得知这是一个数字型的注入

判断字段数 id=1 order by 10 //order by 是排序,如果字段数大于10,那么返回正常,字段数小于我们的排序的数,就会出错

order by 2 返回正常 order by3 返回错误,得到字段数为2

判断能回显的字段 id=-1 union select 1,2 – -

//union语句聚合两个查询的内容,由于页面只返回一行,所以在前面的输入一个不存在的id,我这里直接使-号,以返回我们输入的内容,这里页面上将1,2都返回了,得知两个字段都有回显,
– -的意思是注释掉后面的sql语句

id=-1 union select user(),database()-- - 查看用户名跟数据库

得到是root用户,使用的是pikachu数据库

查询当前数据库中的表

id=-1 union select user(),group_concat(table_name) from
information_schema.tables where table_schema=database()–
-&submit=%E6%9F%A5%E8%AF%A2

得到 pikachu数据库中有5张表

httpinfo,member,message,users,xssblind

查询字段名 -错误

根据名称判断得知,users表中的字段比较重要,那就查询这张表id=-1 union select
user(),group_concat(column_name) from information_schema.columns where
table_name=‘users’-- -&submit=%E6%9F%A5%E8%AF%A2

得到这一个字段
user_id,first_name,last_name,user,password,avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password,level,id,username,password,level,id,username,password

获取字段值

获取字段名-更正

上面仅仅判断table_name = users =很多数据库中都有users这个表,查询的结果是相当的不准确,这次再次加上
table_schema=“pikachu”

id=-1 union select group_concat(column_name),2 from information_schema.columns
where table_schema=“pikachu” and table_name=“users”-- -
&submit=%E6%9F%A5%E8%AF%A2

得到只有 id username password,level 这4张表

根据字段查询内容

id=-1 union select group_concat(username),group_concat(password) from
users– - &submit=%E6%9F%A5%E8%AF%A2

得到3个用户跟对于的3个密码,其中admin对于的密码是e10abc开头,一眼就认出是 123456的md5加密

当然,平时遇到sql注入还是sqlmap一把梭,不过学习还是要知道原理

4.2 字符型注入(get)

payload vince’ and 1=1-- -

4.3搜索型注入

payload: allen’ and 1=1-- -

4.4 xx型注入

payload: vince’)-- -

五:RCE

5.1 exec “ping”

payload 127.0.0.1 && echo 123

5.2 exec “eval”

eval函数是将字符串当作php代码执行,我们可以直接调用system()函数执行系统命令,达到代码执行到系统命令执行

payload: system(“whoami”);

六: File Inclusion

6.1 本地文件包含

http://pikachu.cn/vul/fileinclude/fi_local.php?filename=…/…/…/…/…/…/…/…/./a.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

读取到了本地磁盘 a.txt的内容

6.2 远程文件包含

payload:
http://pikachu.cn/vul/fileinclude/fi_remote.php?filename=http://www.baidu.com&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

七:Unsafe Filedownload

不安全的文件下载

在参数filename

payload:
http://pikachu.cn/vul/unsafedownload/execdownload.php?filename=../../../../../../../a.txt

八: Unsafe Fileupload 不安全的文件上传

8.1 client check

客户端校验,将自己的php脚本重命名为png结尾,然后上传的时候抓包,将名称该过来

路径前台返回,拼接访问

8.2 MIME type

这里是校验上传的 Content-Type: image/png

由于我们后缀本来就是png,就是正确的,还是跟上面一样,将png更改为php

8.3 getimagesize

这里的后缀名是限制死的只能使用图片后缀

我们现在一张正常图片用编辑器打开,在末尾添加上php脚本

然后通过上方的本地文件包含当作php执行

9. Over Permission

9.1 水平越权

http://pikachu.cn/vul/overpermission/op1/op1_mem.php?username=lili&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF![](https://img-
blog.csdnimg.cn/0ce4134b38f24505854380fd2914c293.png)

得到ili的信息,我们更改url中的username参数,更改为lucy 发现我们能获取到同等级用户lucy的信息,这就是水平越权

9.2 垂直越权

通过提示得到有admin管理员用户,可以添加信息 普通用户piukachu 只能查看信息

添加页面的网址在
​​​​​​http://pikachu.cn/vul/overpermission/op2/op2_admin_edit.php

普通用户登录直接访问这个连接,输入后提交,发现我们普通用户的身份依旧能使用管理员的添加用户,这就是垂直越权

十: …/…/

路径穿越

payload:http://pikachu.cn/vul/dir/dir_list.php?title=../../../../../../../../../a.txt

十一: 敏感信息泄露

那直接f12打开开翻 得到用户名跟密码

十二:PHP反序列化

payload: O:1:“S”:1:{s:4:“test”;s:29:“”;}

十三:XXE

payload :<?xml version="1.0"?> ]> &xxe;

十四:URL重定向

url参数可控

payload: pikachu.cn/vul/urlredirect/urlredirect.php?url=http://www.baidu.com

十五:SSRF

15.1 SSRF(curl)

url参数可控

payload: pikachu.cn/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com

15.2 SSRF(file_get_content)

file参数可控

payload: http://pikachu.cn/vul/ssrf/ssrf_fgc.php?file=d://a.txt

打算是当天搞定的,现在已经 02点37分了,后面只有payload细节不详细了,通过这个靶机还是认识到自己的不足

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值