【CTF&WriteUp】2022-07 “强国杯” WriteUp含Re
战队名:超级飞侠
撰写时间:2022-07-16 20:43
强国杯【线上-2022】
I. WEB
【upload_lol】
考点
-
上传绕过
解法
-
经过多次测试发现,文件后缀不能带有php,文件内容不能有
<?
,而?>
这个好像没有过滤,文件类型改为image/jpeg即可;所以先上传一个.htaccess,内容为1
2AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=shell.jpg" -
然后在shell.jpg文件里面写入base64加密过的一句话木马
-
蚁剑连上在var目录下得到flag
【file_sql_new】
考点
-
字符型注入
-
过滤绕过
解法
-
字符型注入,过滤了select,会替换为空,双写select绕过,回显2、3字段
-
爆表名
-
爆列名
-
获取flag路径
-
使用load_file读取flag
II. MISC
【welcome_to_QGB】
考点
-
base64解码
解法
-
将字符串
V2VsY29tZV90b19RR0I=
进行base64解码再套上flag{}格式即可
【B@tCh】
考点
-
BatchEncryption混淆还原
解法
-
文本工具打开显示乱码,改用二进制工具winhex,发现文件头为FFFE,即unicode编码的小端UTF-16,批处理为ansi,所以直接将FFFE改成2020,即可用文本工具打开
-
使用下面脚本进行解(使用该脚本,需要将文件前面的如
&cls
等内容去掉,从@%os
开始,因为我懒得写识别了,所以将正文直接从0字符开始获取),得出flag
1 | #!/usr/bin/python |
【找找GIF】
考点
-
动图分析
-
文件头识别
解法
-
题目提示动图分析
-
aaa文件是png图片,修改高后发现密码
-
使用密码fjgk90^&vvvfdd解压bbb.zip得到bbb文件,分析bbb文件发现是gif图片,但缺少文件头
-
添加文件头,使用stegsolve分析得到flag
【大佬大佬】
考点
-
lsb隐写
-
修改图片高度
解法
-
题目提示获取图片的lsb隐写,修改图片尺寸,stegsolve分析获取png图片
-
修改图片高度获取flag
【The fun picture】
考点
-
压缩包密码爆破
-
图片分析识别
解法
-
题目提示简单的图片分析,解压题目附件提示要密码,爆破出密码为gh89
-
题目有三个文件,FUN.png是压缩包,解压出个flag6文件
-
flag6是个png图片,添加文件头,打开是二维码
-
扫描得到一串base64字符串解码得到flag
IV. CRYPTO
【babyRSA】
考点
-
解法
-
根据给出的数据发现少了N,而根据RSA算法得知
-
N = q * p
-
r = (p -1) * (q - 1)
求得关于r求e的模逆元D
1 |
|
- 求得flag
Ⅴ.Reverse
【encrypt】
考点
-
哈夫曼压缩
-
参考
-
直接用IDA打开main函数发现调用了一个子函数,双击跟进
-
分配了两个内存空间,调用了三个子程序。
-
经过分析得出每个子程序的作用
sub_4007A1
读取文件sub_40081B
对文件进行处理sub_40074C
写出文件
-
直接双击跟进
sub_40081B
对函数参数变量重命名以便于分析 -
首先写出的文件头为 “flag”
-
统计字节频率简称词频
-
对数据进行编码
-
做差值存将插值写出到dest
-
判断是否有剩余的比特位没写出到dest,补齐数据。并判断当前文件长度如果是偶数则写出 " . "
-
最后两给字节可以理解成对数据的校验位
总结
- 统计词频
- 对数据进行编码
- 对数据换表后写出
- 通过简单的算法计算v25,把v32 和 v25的数据做差后的数据写出
-
文件的大致结构
1
2
3
4
5
6
7
8typedef struct File{
int magic = 0x666C6167;
unsigned short frequency_table_size;
unsigned char *frequency_table;
unsigned int origin_file_size;
unsigned char *code_data;
unsigned short check;
}File;
-
思路
-
获取词频表,对其换表
-
使用程序中的算法将原数据转换成插值编码
-
根据哈夫曼压缩原理将每个数据的比特位进行比较
-
写出数据
-
解密脚本
- 脚本1
1 |
|
- 脚本2
1 | from ctypes import * |