CTF | 9分钟
第四届宁波网安市赛初赛
五月 23, 2021
WEB Misc Crypto 市赛

由于赛后官方不给wp(绿盟一向如此),交流群也没有得到其他题解,赛后就根据自己的wp来写了,wp由队友及我共同完成。比赛共解答10题,Web 5道,Misc 2道,Crypto 3道,wp只有一部分,缺少的部分有机会再补上吧

Web

赛后靶机关了,没办法再次复现,只能用当时编写的wp配图,好像源码l都换成了1

简单的php

对长度做了限制,这里代码观察后直接通配符即可

payload:?1=cat fl*

这题环境崩过几次,据说因为共用一个环境还被人删了flag

index

扫描网站目录得到源码

$user和$pass存在注入点,user那里MD5加密就行

payload:user='union select '21232f297a57a5a743894a0e4a801fc3'#&pass=admin

GetFlag

验证码一直动,最离谱的是我CTRL+U里的验证码跟页面的不一样

使用脚本爆破出md5加密前的,提交得到php页面,自己脚本太烂了,放一下大佬的

python
 1import hashlib
 2from multiprocessing.dummy import Pool as ThreadPool
 3
 4
 5# MD5截断数值已知 求原始数据
 6# 例子 substr(md5(captcha), 0, 6)=60b7ef
 7
 8def md5(s):  # 计算MD5字符串
 9    return hashlib.md5(str(s).encode('utf-8')).hexdigest()
10
11
12keymd5 = '8f5fb0'  # 已知的md5截断值
13md5start = 0  # 设置题目已知的截断位置
14md5length = 6
15
16
17def findmd5(sss):  # 输入范围 里面会进行md5测试
18    key = sss.split(':')
19    start = int(key[0])  # 开始位置
20    end = int(key[1])  # 结束位置
21    result = 0
22    for i in range(start, end):
23        # print(md5(i)[md5start:md5length])
24        if md5(i)[0:6] == keymd5:  # 拿到加密字符串
25            result = i
26            print(result)  # 打印
27            break
28
29
30list = []  # 参数列表
31for i in range(10):  # 多线程的数字列表 开始与结尾
32    list.append(str(10000000 * i) + ':' + str(10000000 * (i + 1)))
33pool = ThreadPool()  # 多线程任务
34pool.map(findmd5, list)  # 函数 与参数列表
35pool.close()
36pool.join()

进去也有套娃,绕过去就行,构造payload:4e6333ed08642de989aa4af8ec40941d.php?ip=127.0.0.1%0acat+flag.php

hello,world

扫出备份文件.index.php.swp以及/index.php/login/,进入查看源码

文件包含,传入file=config.php试试

test666=sss607

php伪协议直接出

文件管理网站

扫出1.htaccess和lfi.php

文件包含

这里挂一波Mocha大佬的WEB wp,写得比我这详细得多也更有参考意义

Misc

美丽的小姐姐

因此,判断图片的chunk[0](也就是IHDR块)的数据跟crc32校验值不一致,被篡改了

python
 1import os
 2import binascii
 3import struct
 4misc = open("CRC-ERROR.png","rb").read()
 5
 6# 爆破宽
 7for i in range(1024):
 8	data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]  #IHDR数据
 9	crc32 = binascii.crc32(data) & 0xffffffff
10	if crc32 == 0x5e687792: #IHDR块的crc32值
11		print(i)
12		print("hex:"+hex(i))
13# 爆破高		
14for i in range(1024):
15    data = misc[12:20] + struct.pack('>i',i)+ misc[24:29]
16    crc32 = binascii.crc32(data) & 0xffffffff
17    if crc32 == 0x5e687792:
18        print(i)
19        print("hex:"+hex(i))

改高度,即出flag

音乐和乐谱

十六进制打开,发现末尾给了密码

把ejfg作为密码转为字符串,在线网站

Crypto

RSA

图解

flagMD5加密后大写

简单编码

下载下来,补全压缩后缀,打开后里面是jsfuck文件,在线解码

10进制转16进制

十六进制转字符串,每两位数字是一位字符,转后为id_jws,MD5加密大写

nike

原题,解压一行py脚本,格式化

python
  1(lambda __operator, __print, __g, __y: [(sys.setrecursionlimit(
  2        1000000), [
  3        [
  4            [
  5                [
  6                    [(decode(cipher), None)[1]
  7                        for __g['cipher'] in [(
  8                            'D6VNEIRAryZ8Opdbl3bOwqmBD+lmFXbcd/XfgHalqYBh1FDtbJo='
  9                        )]
 10                    ][0]
 11                    for __g['decode'], decode.__name__ in [(
 12                        lambda cipher: (lambda __l: [(
 13                                init(), [
 14                                    [
 15                                        [(lambda __after:
 16                                            (
 17                                                __print(
 18                                                    'sorry,you dont have the auth'
 19                                                ),
 20                                                0
 21                                            )[1]
 22                                            if(
 23                                                __l[
 24                                                    'auth'
 25                                                ] !=
 26                                                1
 27                                            )
 28                                            else
 29                                                __after()
 30                                        )(lambda:
 31                                            (
 32                                                lambda __items,
 33                                                __after,
 34                                                __sentinel:
 35                                                __y(
 36                                                    lambda __this:
 37                                                    lambda:
 38                                                    (
 39                                                        lambda __i: [
 40                                                            [
 41                                                                __this() for __l[
 42                                                                    'result'
 43                                                                ] in [
 44                                                                    (
 45                                                                        __operator
 46                                                                        .iadd(
 47                                                                            __l[
 48                                                                                'result'
 49                                                                            ],
 50                                                                            chr(
 51                                                                                (
 52                                                                                    s[
 53                                                                                        (
 54                                                                                            __l[
 55                                                                                                'i'
 56                                                                                            ] %
 57                                                                                            256
 58                                                                                        )
 59                                                                                    ] ^
 60                                                                                    ord(
 61                                                                                        __l[
 62                                                                                            'cipher'
 63                                                                                        ]
 64                                                                                        [
 65                                                                                            __l[
 66                                                                                                'i'
 67                                                                                            ]
 68                                                                                        ]
 69                                                                                    )
 70                                                                                )
 71                                                                            )
 72                                                                        )
 73                                                                    )
 74                                                                ]
 75                                                            ]
 76                                                            [
 77                                                                0
 78                                                            ]
 79                                                            for __l[
 80                                                                'i'
 81                                                            ] in [
 82                                                                (
 83                                                                    __i
 84                                                                )
 85                                                            ]
 86                                                        ]
 87                                                        [
 88                                                            0
 89                                                        ]
 90                                                        if __i is not __sentinel
 91                                                        else
 92                                                            __after()
 93                                                    )
 94                                                    (
 95                                                        next(
 96                                                            __items,
 97                                                            __sentinel
 98                                                        )
 99                                                    )
100                                                )
101                                                ()
102                                            )(
103                                                iter(
104                                                    range(
105                                                        len(
106                                                            __l[
107                                                                'cipher'
108                                                            ]
109                                                        )
110                                                    )
111                                                ),
112                                                lambda:
113                                                (
114                                                    __print(
115                                                        __l[
116                                                            'result'
117                                                        ]
118                                                        .encode(
119                                                            'base64'
120                                                        )
121                                                    ),
122                                                    None
123                                                )[
124                                                    1
125                                                ], []
126                                            )) for __l[
127                                            'auth'
128                                        ] in [(0)]][0]
129                                        for __l[
130                                            'cipher'] in [
131                                            (__l[
132                                                'cipher'
133                                            ].decode(
134                                                'base64'
135                                            ))
136                                        ]
137                                    ][0]
138                                    for __l['result'] in [
139                                        ('')
140                                    ]
141                                ][0])[1]
142                            for __l['cipher'] in [(
143                                cipher)]
144                        ][0])(
145                        {}), 'decode')]
146                ][0]
147                for __g['init'], init.__name__ in [(lambda: (
148                    lambda __l: [
149                        [(lambda __items, __after,
150                            __sentinel: __y(
151                                lambda __this:
152                                lambda: (lambda __i: [
153                                        (s.append(
154                                            __l[
155                                                'i'
156                                            ]
157                                        ), (k
158                                            .append(
159                                                ord(
160                                                    __l[
161                                                        'key'
162                                                    ]
163                                                    [
164                                                        (
165                                                            __l[
166                                                                'i'
167                                                            ] %
168                                                            len(
169                                                                __l[
170                                                                    'key'
171                                                                ]
172                                                            )
173                                                        )
174                                                    ]
175                                                )
176                                            ),
177                                            __this()
178                                        )[1])[1]
179                                        for __l[
180                                            'i'] in [
181                                            (__i)
182                                        ]
183                                    ][0]
184                                    if __i is not __sentinel
185                                    else __after()
186                                )(next(__items,
187                                    __sentinel
188                                )))())(iter(range(
189                            256)), lambda: (
190                            lambda __items,
191                            __after,
192                            __sentinel: __y(
193                                lambda __this:
194                                lambda: (
195                                    lambda __i: [
196                                        [
197                                            [
198                                                [
199                                                    [
200                                                        __this() for s[
201                                                            __l[
202                                                                'j'
203                                                            ]
204                                                        ] in [
205                                                            (
206                                                                __l[
207                                                                    'tmp'
208                                                                ]
209                                                            )
210                                                        ]
211                                                    ]
212                                                    [
213                                                        0
214                                                    ]
215                                                    for s[
216                                                        __l[
217                                                            'i'
218                                                        ]
219                                                    ] in [
220                                                        (
221                                                            s[
222                                                                __l[
223                                                                    'j'
224                                                                ]
225                                                            ]
226                                                        )
227                                                    ]
228                                                ]
229                                                [
230                                                    0
231                                                ]
232                                                for __l[
233                                                    'tmp'
234                                                ] in [
235                                                    (
236                                                        s[
237                                                            __l[
238                                                                'i'
239                                                            ]
240                                                        ]
241                                                    )
242                                                ]
243                                            ]
244                                            [
245                                                0
246                                            ]
247                                            for __l[
248                                                'j'
249                                            ] in [
250                                                (
251                                                    (
252                                                        (
253                                                            (
254                                                                __l[
255                                                                    'j'
256                                                                ] +
257                                                                s[
258                                                                    __l[
259                                                                        'i'
260                                                                    ]
261                                                                ]
262                                                            ) +
263                                                            k[
264                                                                __l[
265                                                                    'i'
266                                                                ]
267                                                            ]
268                                                        ) %
269                                                        256
270                                                    )
271                                                )
272                                            ]
273                                        ][0]
274                                        for __l[
275                                            'i'
276                                        ] in [
277                                            (
278                                                __i
279                                            )
280                                        ]
281                                    ][0]
282                                    if __i is not __sentinel
283                                    else
284                                        __after()
285                                )(next(
286                                    __items,
287                                    __sentinel
288                                )))())(iter(
289                                range(256)),
290                            lambda: None, []), []) for __l[
291                            'j'] in [(0)]][0]
292                        for __l['key'] in [(
293                            'aV9hbV9ub3RfZmxhZw=='
294                            .decode('base64'))]
295                    ][0])(
296                {}), 'init')]
297            ][0]
298            for __g['k'] in [([])]
299        ][0]
300        for __g['s'] in [([])]
301    ][0])[1]
302    for __g['sys'] in [(__import__('sys', __g, __g))]
303][0])(__import__('operator', level = 0), __import__('__builtin__',
304    level = 0).__dict__['print'], globals(), (lambda f: (lambda x:
305    x(x))(lambda y: f(lambda: y(y)()))))

格式化也好难读,这里把if(__l['auth'] !=1)修改为if(__l['auth'] ==1)运行即可出flag

进决赛了,没打过AWD,kali不太会用,师傅们手下留情,欢迎各位师傅交流交流AWD基础