2019-秋季-校-CTF-WriteUp.
记录一次真正意义上的CTF比赛;吸取教训,总结经验。
- 教训:远远不够仔细 不够熟练
- 经验:第一次知识在实战中磨合 有了印象
加密
Easycrypto
下载解压得lookcarefully.txt 打开显示
WXAD 3dwr G_VN qz_s RVDG 8kuo -'p] !A_W wxad h_bm rvdg h_bm ECSF WXAD wxad =_[\
这题没做出来的人是真的蠢 比如我
- 键盘密码 四个键位两两包围一个键位 拼起来即可
- SeBaFi{QsnfnDSs}
Warm up
打开所给网址 显示以下信息
$flag="SeBaFi(*}"; echo base64encode(gzcompress(hex2bin(strrev(urlencode(bin2hex($flag)))) eJy7btoSfK20uWRbsJvxEfPIbUuWLCteli7qnnJsi2lYacuxtO3TUsRUwkwBjV4STA==
比赛时 字符串给的是错的?!现在的也是??
- 按照代码的编码逆序解码即可
<?php $s=eJy7btoSfK20uWRbsJvxEfPIbUuWLCteli7qnnJsi2lYacuxtO3TUsRUwkwBjV4STA==; echo hex2bin(urldecode(strrev(bin2hex(gzuncompress(base64 decode($s)))))); ?>
- SeBaFi{flHWeSKlFtQqJ7jJJhzsL3d5kG8Wm5HS}
read me
下载的压缩包含四个文件1.txt 2.txt 3.txt flag.txt
Hint:小小小
- 1 2 3文件小所以采用CRC碰撞绕过zip密码
#coding:utf-8 import zipfile import string import binascii def CrackCrc(crc): for i in dic : for j in dic: for p in dic: #for q in dic: s=i+j+p+q if crc == (binascii.crc32(s) & 0xffffffff): #print s f.write(s+"\n") return def CrackZip(): for I in range(54): file = 'chunk' + str(I) + '.zip' f = zipfile.ZipFile(file, 'r') GetCrc = f.getinfo('data.txt') crc = GetCrc.CRC #以上3行为获取压缩包CRC32值的步骤 CrackCrc(crc) dic = string.ascii_letters + string.digits + '+/=' f=open('out.txt','w') CrackZip() f.close()
- 分别执行三个txt文件的crc值 找出有规律的字符串
keyisc rc32ue nit!@#
拼一起keyiscrc32uenit!@#
为解压密码- 解压得flag
- SeBaFi{anheipo_huai_shen_three}
又是维吉尼亚
打开txt
cmzzwtcdlimzydhphdelohroipptlwetydtchvadozstwdcmznyzvdqomiwzwivacmznyzv rhzwtcltmawvtvzvjphwopivjyijzdzgdwimzwyqqtmdzahdipwtrtyvdwvyskzmtcltmawroimirdzmwwzvdz vrzwivaweppikpzwipwtriprypidzwpzghripazvwhdeivadozfzehwuhmjhvhi NmSgNv{m09f718v9kr8gk7p66ncv38nr0i44640}
- 注意题目无密钥 密码描述为一长串的字符串 猜测词频分析
- 访问https://quipqiup.com/ 模式选择
statistics
进行词频分析 - 提取密钥
virginia
- 利用密钥解密
NmSgNv{m09f718v9kr8gk7p66ncv38nr0i44640}
- SeBaFi{e09f718a9ca8ac7c66fca38fa0c44640}
rsa
hint:常规rsa
rsa不懂 留坑
MISC
hiddenbears
下载解压得到一张显示四头熊的图片
- 看属性 无
- 丢进winhex 无果
- 丢进binwalk 无果
- 丢进StegSolve 四周有白边
- 切换几次颜色通道 能看到最上边有字符串 加上格式即可
- SeBaFi{Ao39gPDEzwrkojhEqNmtuDKc}
wakaka
下载得压缩包 有密码 压缩里面是flag.txt
hint:密码为wakaka+五位数字
- 上工具直接爆破 得密码wakaka21051
Hidden91
下载得图片
- binwalk得压缩包解压得txt
- 打开txt7E4F66637478532424313A28352A24533E31514A255F245938216A7B420A
- base16解码得~OfctxS$$1:(5*$S>1QJ%_$Y8!j{B
- 结合题目91 猜测base91解码
- SeBaFi{170065%shtxdddk}
二维码动图
下载得一gif
- 没啥好说的逐帧分离gif 一个个就成
- SeBaFi{mAr10_i5_a_br0}
泰加熊
很恶心的题
下载解压得七张图片
- binwalk一个个试 第六张图片有点东西 分离出zip
- 解压得名字为msg文件
- 在linux下执行./msg
可打开此文件
- Flag: B3znJluppFPJnNG7PAg
mmmmmm
下载得一图片
- binwalk 分离出zip
- 解压得readme.txt和另一个zip 此zip中含readme.txt及flag.txt
- 这是明文攻击
- 使用 AZPR 工具,选择文本攻击/AAPR明文竟然没用
- SeBaFif{readme_64%_jok}
PWN
简单的溢出?
确实简单 只有蠢人不会做 比如我
- PEiD 分析发现不是有效的PE文件 可能试dos16位
- 丢进ida32 查找字符串即可
- SebaFi{4cc09188c005dc1a5fad8c6e2551903}
拼接成 shell
留坑
Reverse
安卓签到
- 使用 jadx 工具反编译 apk
- 查看res/layput/activity_main.xml
- SeBaFi{ee2faeed038501c1deab01c7b54f2fa9}
4 位数
下载得re3.ppp
- 丢进ida32 选中main反编译 得
int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int v4; // [esp+24h] [ebp-84h] int v5; // [esp+30h] [ebp-78h] char nptr; // [esp+38h] [ebp-70h] unsigned int v7; // [esp+9Ch] [ebp-Ch] v7 = __readgsdword(0x14u); printf("please input the key:"); memset(&nptr, 0, 0x64u); __isoc99_scanf("%s", &nptr); if ( strlen(&nptr) != 4 || (v4 = atoi(&nptr), v5 = v4 % 100 / 10, v4 % 10 + v5 + v4 / 1000 + v4 % 1000 / 100 != 23) || v5 / (v4 % 10) != 2 || v4 % 1000 / 100 - v5 != -1 || v4 / 1000 % v5 != 3 ) { puts("wrong!"); result = 1; } else { puts("correct!"); result = 1; } return result; }
- 根据功能 写payload
- SeBaFi{9563} SeBaFi{9563}
vvv
留坑
Web
签到
白给题 查看源代码
easy
打开网页显示 “Only allowed access by local address
- 明显xff
- 抓包加上X-Forwarded-For: 127.0.0.1
go 显示信息提示我们access admin
- 找到cookieuser=Z3Vlc3Q%3D
试guest的base64 把admin的base64替换它 go
- SeBaFi{a5717a649d346ed0c51be68888c130cd}
相同的 MD5
打开网页找到最终网页
- 啥也不说了 直接数组走起
序列化
留坑
过四关
留坑