2017-问鼎杯初赛-WP

不多说~

1-1

简单测试发现它是先判断是否存在7然后判断是否等于2017,直接使用精度问题即可绕过。

1-2

测试没任何反应,后来发现可以直接打开admin.php,右键发现一个十分可疑的js,打开后发现里面是个json请求,里面有个key,于是构造此请求,data为这里的key,url为这里的action,结果没反应,查看burpsuite发现是302跳转,得到flag。

2-1

拿到发现是wephone事件,开始以为是樱桃小丸子那个微博,发现名字改了,后来找到后发现微博删光了,找到备份没找到任何相关内容,后来发现后台页面,用过typecho知道登录账号是邮箱形式,测试发现她的邮箱账号已被注册,猜测不是其他队伍注册的那么这就是正确的账号,尝试了各种弱密码无果,最后使用车牌通过,在留言里面看到敏感链接,打开即见flag。

2-2

注入点应该在username,先测试一下过滤了哪些,发现过滤了空格,单引号,and,or…
但是它使用的是双引号而双引号没有被过滤,直接构造一个四则运算:a"^0^"^1,发现还真的绕过了

然后开始构造注入语句。这个时候发现一个很坑的点,因为过滤了or,所以无法使用information_schema。所以只能猜表名了。
猜表
先试了试admin

不存在,再试试user

也不存在,再试试users


发现存在
猜列
先试试username

发现存在,然后试试password,这时候又发现坑了,password也有or,绝望..最后试出来是pass列。直接上盲注脚本

跑出来密码之后登陆,发现不显示密码错误了,但是没有其他可用信息,这是另一个队友说访问显示where is flag?,一问发现他访问的admin.php页面,于是再去访问admin.php即可拿到flag

3-1

file看一下文件

解压后还是没后缀,再去file一下

用wireshake打开,导出http对象可以直接看到flag.rar文件,导出后发现有密码。
再回去找一下password

发现一个py的aes加密脚本和一串密文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# coding:utf-8
__author__ = 'YFP'
from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64
IV = 'QWERTYUIOPASDFGH'
def decrypt(encrypted):
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.decrypt(encrypted)

def encrypt(message):
length = 16
count = len(message)
padding = length - (count % length)
message = message + '\0' * padding
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.encrypt(message)

str = 'this is a test'
example = encrypt(str)
print(decrypt(example))

19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo=,写个脚本解密就好了

然后解开压缩包就可得到flag:WDCTF{Seclab_CTF_2017}

3-2

用Stegsolve打开之后一帧一帧保存下来,再用stegsolve的image combiner一张一张add起来

最后扫出二维码是一串pyc文件的十六进制。
保存为pyc文件之后,使用uncompyle反编译(这里有个坑,一开始我用的是在线反编译,发现死活做不出来,然后队友拿去编译之后发现和在线反编译出来的有点区别的..)

把这个py文件放到它给的路径下编译吧

4-1

看到一张图片,先放到binwalk看一下)解压出来是两张看起来一样的图片,然后提示说图二比图一多东西。想起第十届全国信息安全大赛原题http://bobao.360.cn/ctf/detail/205.html
猜测盲水印
https://github.com/chishaxie/BlindWaterMark

4-2

很长的字符串,猜测古典密码,直接扔quipqiup即可解密。

5-1

按题目就是xor,但是不知道和谁异或,才开始猜测是和一字节,题目真真假假,那就0b1100结果失败,接着跑0-255,都没有发现可疑字样也没发现生成的文件是可识别格式,于是百度xor ctf发现了xortool这个工具,按照GitHub上的用法,对于二进制文件使用-c 00发现了大量可见字符,再使用-c 20发现了密码是Good\tuckToYou,再看明文很像答案了,可是还有些乱字符,仔细看密码把\t换成L即GoodLuckToYou即可解密。