作为一个二进制手……我把web强行做完,我太难了……
GET
POST
小饼干
小饼干?cookie!
url解码:
1 moectf{y0u_c4n't_e4t_thi3_c00k1e}
Introduction
进入网页,Ctrl+U看源码,Ctrl+F搜索
一句话
一句话木马还是一个比较常见的考点, 现在直接AntSword或者Cknife一把梭,建议AntSword,,,
moectf{0hhhh!!!y0u_know_h0w_to_u3e_eva1}
EzMath
刷新那么快,肯定不能用手来算,这块就需要用脚本,这个题特别像bugku的一道题目:秋名山老司机。找了找之前的笔记,就有了这样一个脚本:
1 | import requests |
淦!!!复现的时候环境没了,,这里贴一下秋名山老司机这个题。可以尝试着把我上面的脚本改一下~
三心二意
先贴源码:
1 |
|
一看就知道这个题目考察的是php语言的一些小tricks,先把a,b,c,d四个变量都设置值,然后再一个一个调
a不解释,,,
b不解释,,,
c是md5绕过,可以看下这篇文章
d不解释,,,
就这吧~爱会消失对不对
俄罗斯头套
这个题,没做过类似的,现场百度,查到这个题的考点是http响应头,那么这个题也就没什么说的了,抓包,改响应头……就完了
这里放两张修改后的:
moectf{r3que5t_he4der_1s_ea5y!!}
include
盲猜文件包含漏洞,,,点开do not click???我偏要click,然后看源码:
果然,和猜的一样。
先试一下:
好吧,我想的有点简单了。他的flag应该是在注释里面,那我们把整个文件base64一下就好了:
Moe unserialize
由题干猜考点:反序列化
这里第一个考点是vim的备份文件,我们输入
下载文件,然后在wsl里面用vim把swp备份文件恢复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
error_reporting(0);
class Moe {
public $a;
protected $b;
private $c;
function __destruct() {
if ($this->a === '1' && $this->b === '2' && $this->c === '3') {
include 'flag.php';
die($flag);
}
}
}
$moe = $_GET['flag'];
unserialize($moe);
有一天,赤道企鹅在愉快的使用vim给学弟挖坑,突然伴随着身体的一阵抽搐,电脑死机了。企鹅悲痛欲绝,聪明的你能帮助企鹅找到他挖的坑吗?代码审计(阅读,写一个脚本生成序列化的结果
1
2
3
4
5
6
7
8
9
10
11
class Moe {
public $a = '1';
protected $b = '2';
private $c = '3';
}
$a = new Moe()
echo serialize($a)我们把这些内容get提交到flag里面,,,嗯???没反应???
这里感谢一下Noah大佬(Noah,yyds),他说:你个屈屈一个菜鸡bb,这里面有空字符没显示出来,你个辣鸡!!!
我留下了屈辱的泪水,然后便查了一下相关资料:
知道直接复制粘贴网页上的内容是不行的,于是再次打开自己脚本的输出界面,Ctrl+U查看源代码,发现端倪:
在这里我们就可以看到缺少的空字符,所以我们在get的时候手动加上%00就好了。
XXE
没接触过,即刻学习XXE漏洞然后又看了看i春秋上面的视频,就尝试做这个题目。
先大致代码审计(阅读一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// flag is in '/flags/flag1.txt' and '/flags/flag2.php'
libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
if (strpos($xmlfile,"flag1.txt") !== FALSE){
if (strpos($xmlfile,'file:/') === FALSE){
die("Please use file protocol.<br/><br/>");
}
}
if (strpos($xmlfile,"flag2.php") !== FALSE){
if (strpos($xmlfile,'file:/') !== FALSE){
echo "Why not try php://filter?";
echo '<br/><br/>';
}
}
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$test = simplexml_import_dom($dom);
echo $test;
highlight_file(__FILE__);知道题目先把flag分成两个部分,然后分别采用两种协议,所以我们需要写两个payload。
1
2
3
4
5
6
7
8
9
10
11
12
13
<x>&f;</x>
<x>&f;</x>base64解一下:
第一部分:moectf{XXE_
第二部分密文:PD9waHAgJGZsYWcyID0gJzRuZF9waHBfZjFsdDNyfSc7ID8+
第二部分:
moectf{XXE_4nd_php_f1lt3r}