layout: pagetitle: “2019-秋季-校-CTF-WriteUp”
date: 2019-08-28 01:01
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
- 打开txt
7E4F66637478532424313A28352A24533E31514A255F245938216A7B420A
- 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 - 找到cookie
user=Z3Vlc3Q%3D
试guest的base64 把admin的base64替换它 go - SeBaFi{a5717a649d346ed0c51be68888c130cd}
相同的 MD5
打开网页找到最终网页
- 啥也不说了 直接数组走起
序列化
留坑
过四关
留坑