长亭百川云 - 文章详情

GrabCON CTF 2021 WP

Red0

54

2024-07-13

1、Pwn

1.1、Easybin

程序直接给了后门函数system('/bin/sh'),return2text即可获得shell

from pwn import *

1.2、Can You?

这题开了canary,但存在格式化字符串漏洞,可以读取canary的值,然后再进行溢出修改返回地址为system('/bin/sh')的地址

首先使用pwndbg调试,在printf处下断点,运行至此处输入%x.%x.%x.%x,得到第一个参数值为0xffffcea8

在栈中找到该值

可以知道格式化字符串第一个参数的地址为0xffffce90,而canary在ebp-0ch处,即0xffffcf0c

由此可以计算0xffffcf0c-0xffffce90=124,即31个字节,编写exp如下

from pwn import *

1.3、Pwn CTF

该题未开栈不可执行保护,并且泄露了输入字符串的首地址,可以构造shellcode,ret2shellcode

from pwn import *

2、Crypto

2.1、Warm-up

下载下来是一串

S01ZRENXU1NJVkhGUVZKUkpaRkZNMlNLSTVKVENWU0xLVlZYQVlLVElaTkVVVlRNS0pIRkc2U1dKVkpHV01LWEtaQ1VVVENXTlJORlNVS1dOUkdGS01EVUs1S0dXVlNLS1pDWFFUQ1ROUllFT1VUTE1STFZDTUxFSk5MR1c0Q0lLWVlEQ1RDWEtWMkZNVjJWTkJKRk1SS09MQktHV05EWktKV0U0VlNOTlJTRVdWVEtLSkxWR01CUklOTEdXNUNQS05XRkVSQ1dLWkhFSVVaUk9CTUZFMjJXS1ZKVENXU0tLWlZWVVJTVUdGTEZLVkNGR0ZIVTRSU1ZQRkdXWVRTTUtOVlRLVEtTR0ZSVEFVSlFNUkdGSVZUTUs1SkZNVExaS1pWWElWMk5OTkxFNFZUS0pKTFZJUkxRSlZKR1dNS1RLTVlEU1RDVk5OMkVRVjJXSlpLRk1WTFVKTkpUQ1VTRUtaV0U0VjJTR0JORklVU1dNUkxGTVJMVUpSSldXNkNYS0lZVlVSQ1RHQVlVT1ZDRk1STUU0VktPS0ZKVENTU0VLWldGTVZLUkdGU0U2VkxMTVJNVktNS1dNRktXV09LREtFWUZVVUNWTk4yRVFVWlJPQkdGTVJLT0s1S1RBM0NNS0pWWFFTQ1hLWlNFSVZMTE1SRFZJMjIySlJMR1dUU0hLSVlWVVMyV05OU0ZHVTMySkpGRksyM0VLVklWTVVTVUtSS1hJVDJXR0JORk1WTDJKSk1GRU1DMktOTEVLUlNXS05XRU1VQ1JOTlNFT1ZEMkpGNUZPVkxMR0ZKVEFXU09LWVlVNFJTVEdGWUVJVlJRTlJKRTIyWlZKNUtHV05LR0tWTEZVVkNXTk00VUdVM0xMSkZGSzIzWUtKSldXU1NMS0lZV0dNS1JHRkpFWVZMTEpaTVZLVlNPSlJLVEE1Q1NLNUtWRVZDV0tWSEZNVVJRSVVZRk0yMkdLWkpXVVZTSktaS0RBT0tRS1FZRFNVQ1JIVTZRPT09PQ==

根据题意就base64与base32一直解,各解5次出来结果

GrabCON{dayuum_s0n!}

2.2、Poke Ball RSA

e很大,考虑小解密指数d,使用wiener攻击求解d

n = 498934084350094415783044823223130007435556803301613073259727203199325937230080661117917023582579699673759861892703348357714077684549303787581429366922208568924252052118455313229534699860304480039147103608782140303489222166267907007839021544433148286217133494762766492655602977085105487216032806292874190551319

2.3、Old Monk's Password

enc、enc1和enc2都是用flag加密后得到的密文,每次加密开始的i不同。因此只需还原出第一个加密的i即可根据加密逻辑编写解密脚本,得到flag

enc = b'\x0cYUV\x02\x13\x16\x1a\x01\x04\x05C\x00\twcx|z(((%.)=K%(>'

2.4、The Anceint Temple

题目代码如下:

M, s, l, C = 7777771, [], 1337, [] 

根据以上源码可知,该题将flag的每个字符转换成二进制形式,进行背包加密,每个背包的重量为数组n,每个字符的加密结果存在数组C中,使用ctf-wiki上的脚本进行解密

import binascii

3、Web

3.1、E4sy Pe4sy

进去之后在登录框中用万能密码进行sql注入

username=admin'or 1=1#

登录即可得到flag:GrabCON{E4sy_pe4sy_SQL_1nj3ct10n}

3.2、Basic Calc

一道典型的php无字母shell题,preg_match匹配输入中是否存在字母,存在的话进入die分支,不存在则进入eval函数执行

由于题中已经提供了eval函数,所以用取反构造system函数输入命令即可

eq=$_="%8C%86%8C%8B%9A%92";$__="%a0%af%b0%ac%ab";$___=$$__;$_($___[_]);&_=whoami

4、R****eversing

4.1、Easy Rev

直接静态查看,比较输入和v2

运行得到flag

4.2、Unknow1

exeinfo查壳发现存在upx壳

去壳后ida动态调试,查询字符串定位到“Enter the password: “下断点

开始调试,到输入函数停止,输入123456789

回车,继续跟进,发现到0x401EBA处存在一处判断跳转,会跳转到失败分支,但其正下方就是成功分支,所以修改ZF标志位的值,使其不跳转

进入到成功分支,继续跟进,得到flag

4.3、Unknow2

查壳,发现存在UPX壳

去壳之后IDA打开,静态查看字符串,发现关键字符

在banner处下断点,尝试能否让程序走向输入密码分支

开始调试

结果失败,还是会直接退出且中间没有判断跳转点,所以继续进行静态分析,在main_one函数中找到可疑代码

尝试让程序走到main_one分支试试,向上追溯,在main_main函数处下断点,开始调试

一路F8直到0x000055B6E7319F96处发现有一个跳转逻辑跳过了main_one函数,所以修改ZF标志位,使其不跳转,再F7步入main_one函数

跟进,发现之前标记的关键词断点,执行过去之后控制台弹出输入密码字符

回车输入密码一路跟进,经过一个大循环到达可疑位置上方,此时又出现一个跳转,还是修改标志位,不让他跳转,注意此时修改的是SF标志位(之前都是ZF位)

跟进一行又碰到一个跳转,老套路修改标志位,成功进入到可疑分支

继续跟进,发现go_C14,这是字符串“GrabCON{”的地址

一路跟进到一个打印函数,发现打印出flag,flag中括号前后有两个空格要去掉

GrabCON{626c61636b647261676f6e}实际上就是blackdragon的16进制字符串

4.4、Maths

================

用ida打开分析,该程序先将输入的flag进行hex编码,得到76个字节,将其分为两部分,分别为input1,input2。

然后将其进行一系列的运算得到一个二元四次方程组

通过分析列出如下的方程组(其中x,y为flag的两个部分)

使用sage对等式右边的式子进行因式分解

由此可以得到:

根据上述式子编写sage脚本得到x和y

for i in divisors(v5)://这里的v5是上述等式的左边部分

得到flag为GrabCON{r3v_4nd_m4th_1983eeebb6969ed5

5、Forensics

5.1、First steps

下载memdump.raw文件发现是一个dump下来的linux内存文件,用HxD打开,根据题目提示搜索关键词,linux下创建文件的命令常用的有touch、echo等,既然题目说创建并写入,那先搜索一下echo试试

搜索出来很多条,此时可以用echo + 空格 + 引号搜索,一般Linux下创建并写入都是用 echo “123” > 1.txt这类命令

搜索完成后立刻发现一个可疑的地方,类似shell命令行的一段文本

双击跟进,发现flag,文件为welcome,内容为一段md5(echo的那段base64解密后就是下面那段MD5)

GrabCON{welcome_402051f4be0cc3aad33bcf3ac3d6532b}

5.2、Gang Busted

下载题目,是个安卓系统的文件夹备份

一开始被三个奇怪后缀的app吸引了

后来发现app是后面题目用到的

锁定社交平台是Skype后,开始用Sqlite Studio打开所有数据文件,但都是无用信息和空信息

后来在ProntoDate的提醒下,想到应该有相应的工具

找到Skyperious,一个Skype数据文件读取的工具

找到group name——31337 hax0r plan

找到参会人员和邮箱——evil mike,sidemaf155@5ubo.com

还找到聊天记录,是跟后面的Good Beating题有关,里面有个链接下载good.apk

但apk在安卓文件夹里也有

所以flag就是

GrabCON{skype_sidemaf155@5ubo.com_31337_hax0r_plan_evil_mike}

6、OSINT

6.1、ProtonDate

寻找sc4ry_gh0st@protonmail.com的创建时间

github搜索protondate,发现项目

https://github.com/1cbf94bc-bc47-42b9-9197-244437fad1e6/protondate

运行得到时间

flag为GrabCON{03_09_2021}

6.2、Victim1

进入网站,是一个监控视频

监控里白天有黄色的缆车和雪山,再加上题目标题叫受害者,就查到了意大利今年发生的缆车事故,疯狂输入该事故的城镇名字,一直错误

然后在后面查另一题的网站时把ip地址丢到shodan里一搜

找到Brunico的邮编就对了,GrabCON{39031}

6.3、Victim2

这题是张图片,找图片的位置

右下角有个hotel有名字——SCHENNERHOF

google地图一搜

按照图片角度,就是后面这个Hotel Hohenwart了

所以flag是GrabCON{hotelhohenwart}

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2