人生第一场CTF的解题报告(部分)

解题报告 濮元杰部分:

王者归来: 120

场景

小王入职了一段时间,最近有点无聊。Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人。想到这,小王一眼看到了隔壁的小丽,哎,IT界小丽绝对算得上是一位美女啦,于是小王凑了过去对小丽说:小丽,看你眉头紧锁的,需要本大侠帮忙吗?小丽转头看着小王,愣了足足有10秒,突然说:那,那好吧,如果你帮我搞定这三个问题,嗯~我请你吃晚饭,就我们两个。天哪,这,这,小王已经按耐不住突如其来的喜悦,战斗力倍增,大喝一声:好,来吧! (为了得到美女垂青,小王决定放手一搏)

描述

题干:小丽被分派去破解一份被加密的数据库登录配置文件,小丽通过N次测试后发现,原来TEST 用户的密码竟然是TEST123123,但这个数据库帐号能用的功能太少了,而小丽的组长却要求她分析出SA的密码。于是小丽把这个任务作为第二个难题抛给了小王。事实上,这件事对于小王来说也不算难,小王沉下心来努力还原算法,最终得到了 sa的密码(flag)。
DatabaseName="TEST" user="TEST"
password="00560041005b00440011007200b3013100300037"
DatabaseName="GCOA" user="sa"
password="0071007e007f006a004b002a00e70163006d0065002900500003"

解题:一开始关注到了后面的数字都比前面的大,并且是四个四个一组的,上了个厕所后脑洞大开,TEST123123--------ascii----》84 69 83 84 49 50 51 49 50 51------binary---à 1010100 1000101 1010011 1010100 110001 110010 110011 110001 110010
110011

0056 0041 005b
0044 0011 0072 00b3 0131 0030 0037------binary------à1010110 1000001 1011011 1000100 10001 1110010 10110011 100110001
110000 110111

将两个二进制放在一起并且添加前导0对比:

1010100 1000101
1010011 1010100 110001 110010 110011 110001 110010 110011

1010110 1000001
1011011 1000100 10001 1110010 10110011 100110001 110000 110111

发现上下两个串便是XOR 10 100 1000 10000 100000…10 100 1000….找到规律后迅速解决了这题

1110001 1111110
1111111 1101010 1001011 101010 11100111 101100011 1101101 1100101 101001
1010000 11  --》

1110011 1111010
1110111 1111010 1101011 1101010 1100111 1100011 1101111 1100001 100001 1000000
100011

Answer:
[email protected]#

抽丝剥茧: 140

场景

这是一次高手间的较量。就在5分钟前,吴总把小王叫到办公室,神秘的对他说:小王,你在公司表现一直不错,我关注你已经很久了。现在,公司里可能出现了商业间谍,我们初步怀疑是小丁,但没有证据。这件事我决定交给你去处理,但是你要绝对保密。小王寻思:小丁也是一名出色的信息安全工程师,想要从他留下的蛛丝马迹中找出线索,完成吴总交代的任务,着实是一件头痛的事情。

描述

题干:据相关情报得知,小丁一直在公司中访问一个网址的文件服务器,并上传了一些数据,这里很可能都是公司的机密数据,但是这台服务器安全性很好,暂时无法突破,所以我们需要调查小丁使用的密码,这个密码我们一直怀疑跟小丁计算机上的一个压缩文件有关,至于存在什么关系,我们目前还不得而知。(提示:找到最后指向那个文件中隐藏的flag)
地址:http://range.jsxajs.cn:8080/file/one/index.docx

解题报告:这题困了我们大概一天的时间吧,第一天把文件改成rar,发现能打开,无果,寻病终。第二天终于找对了方向,先是在文件中想搜一下flag关键字,谁知搜着搜着搜到了一个白色的http开头的字符,将其变成红色后发现:Next Document
http://range.jsxajs.cn:8080/file/one/ e9d520bb983c5ed0.docx

下载之,发现里面有隐藏字符(能那么快发现是因为我的word默认开启了查看隐藏字符233333),直接下载发现一幅图片:b2e514b8576fab1a.jpg

Winhex打开之发现里面藏着另一个图片的地址,再去下载发现1306f3da181885e4.jpg

仍是winhex打开,末尾发现PK文件头,应该是主办方要我们用.rar打开它,但文件应该没有压缩,因此直接往下翻一下就看到了答案:address.txt 鹁?答案字符串 1002F07D8F0088

兵不厌诈: 120

场景

两个星期后,小王顺利入职了公司,首先是为期三个月的实习期。小王与同事A、B、C一同入职,相互比较熟悉。同事A擅长加密与解密,同事B擅长逆向反汇编,同事C主要研究的是移动终端安全,小王自己擅长渗透测试。经公司领导讨论后,决定将小王与A、B、C组成一个团队。于是,小王的实习期开始了。 (声明:web类题目使用扫描工具无效,如因扫描堵塞自己学校的网络出口,后果自负)

描述

题干:揭晓入侵者如何进入后台后,开始对前端1元订单的事件进行处理。下面地址是一个购买页面,队员需要改变商品价格(1元)然后提交订单,获取flag。(提示:key的提交形式为flag:{xxxx})
地址:http://218.2.197.250/Ticket/index.html

题目大意:一开始我用fiddle抓包,但是什么包都没有抓到,再看form的action发现属性 是传到本地的,但搜索了try
again关键字,都没有,于是很好奇try
again到底是从哪里来的。

CSS不能弹窗,思来想去只能是js的问题,翻到bootstrap.min.js,硬着头皮看了下它的代码,用subline整理以及高亮了它的代码后,我这个强迫症终于能看它的代码了,上下翻了一下,唯一值得注意的表示一个eval函数,上下翻了下,发现alert,try,again ,flag等关键字都在里面,心情顿时好了好多

把文件头eval(function(p,a,c,k,e,r)搜索了一下 发现这个http://www.jb51.net/article/9705.htm

于是本地构造了这个HTML ,把eval函数整个放进去,解密出来看到还是加密了的内容,再次解密一下,发现了当值大于100 alert(“try
again”),否则alert flag:{a10V101IGlzIGY101MTIzayEyWyky}

本来还以为要把里面这串再decode,后来发现想多了,直接把这个输进去即是答案,好开心

庐山真面: 120

场景

小王工作了一段时日,已经对现有的工作驾轻就熟了,他一直希望不断丰富自己的经验技能。正好公司即将举行底层安全工程师的竞岗考试,对于小王来说,这无疑是一个巨大的挑战。本次考试的考官是公司里出了名的“黑面罗刹”李经理——公司里做逆向分析技术的泰斗。据同事说,此次竞岗考试都是基础题目,只考核是否具备基本的逆向知识,小王略松了一口气,走进了考场。

描述

题干:李经理分发给参加每一个竞岗考试的员工一个被加密的html,李经理要求大家分析这个文档并给出第一轮考试的明文通关flag。
hash="118,97,114,32,74,61,102,117,110,99,116,105,111,110,40,109,41,123,114,101,116,117,114,110,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,109,94,50,41,125,59,101,118,97,108,40,74,40,49,48,54,41,43,74,40,57,57,41,43,74,40,49,49,51,41,43,74,40,49,48,54,41,43,74,40,51,52,41,43,74,40,54,51,41,43,74,40,51,52,41,43,74,40,51,55,41,43,74,40,56,51,41,43,74,40,49,49,48,41,43,74,40,49,49,52,41,43,74,40,49,48,57,41,43,74,40,55,55,41,43,74,40,56,54,41,43,74,40,54,56,41,43,74,40,54,52,41,43,74,40,56,53,41,43,74,40,56,49,41,43,74,40,56,56,41,43,74,40,56,54,41,43,74,40,56,53,41,43,74,40,57,49,41,43,74,40,49,49,53,41,43,74,40,53,53,41,43,74,40,49,48,49,41,43,74,40,49,49,57,41,43,74,40,49,48,49,41,43,74,40,54,55,41,43,74,40,54,55,41,43,74,40,54,55,41,43,74,40,57,57,41,43,74,40,55,50,41,43,74,40,49,48,49,41,43,74,40,55,52,41,43,74,40,56,51,41,43,74,40,56,51,41,43,74,40,55,55,41,43,74,40,53,50,41,43,74,40,49,49,55,41,43,74,40,56,51,41,43,74,40,54,55,41,43,74,40,54,53,41,43,74,40,54,55,41,43,74,40,54,55,41,43,74,40,55,57,41,43,74,40,56,55,41,43,74,40,49,49,55,41,43,74,40,54,55,41,43,74,40,54,55,41,43,74,40,56,51,41,43,74,40,55,49,41,43,74,40,49,50,51,41,43,74,40,55,54,41,43,74,40,55,57,41,43,74,40,57,57,41,43,74,40,55,51,41,43,74,40,49,49,48,41,43,74,40,55,54,41,43,74,40,56,51,41,43,74,40,55,52,41,43,74,40,56,50,41,43,74,40,56,54,41,43,74,40,56,50,41,43,74,40,49,50,51,41,43,74,40,55,48,41,43,74,40,57,49,41,43,74,40,56,53,41,43,74,40,54,52,41,43,74,40,55,54,41,43,74,40,54,56,41,43,74,40,52,57,41,43,74,40,55,50,41,43,74,40,54,56,41,43,74,40,55,55,41,43,74,40,54,56,41,43,74,40,54,53,41,43,74,40,56,51,41,43,74,40,49,48,55,41,43,74,40,49,49,50,41,43,74,40,49,49,49,41,43,74,40,54,53,41,43,74,40,53,50,41,43,74,40,54,55,41,43,74,40,54,51,41,43,74,40,51,55,41,43,39,39,41,59,10"

解题报告:一看这题眼都花了,密集恐惧症伤不起TUT
仔细看下数字范围确定是ASCII值,虽然比较水,但好歹是密码吧混了3年,CCBC出题及参赛都经历过的,岂能败在编码题上!把ascii跑出来后发现是var
J=function(m){return String.fromCharCode(m^2)};eval(J(106)+J(99)+J(113)+J(106)+J(34)+J(63)+J(34)+J(37)+J(83)+J(110)+J(114)+J(109)+J(77)+J(86)+J(68)+J(64)+J(85)+J(81)+J(88)+J(86)+J(85)+J(91)+J(115)+J(55)+J(101)+J(119)+J(101)+J(67)+J(67)+J(67)+J(99)+J(72)+J(101)+J(74)+J(83)+J(83)+J(77)+J(52)+J(117)+J(83)+J(67)+J(65)+J(67)+J(67)+J(79)+J(87)+J(117)+J(67)+J(67)+J(83)+J(71)+J(123)+J(76)+J(79)+J(99)+J(73)+J(110)+J(76)+J(83)+J(74)+J(82)+J(86)+J(82)+J(123)+J(70)+J(91)+J(85)+J(64)+J(76)+J(68)+J(49)+J(72)+J(68)+J(77)+J(68)+J(65)+J(83)+J(107)+J(112)+J(111)+J(65)+J(52)+J(67)+J(63)+J(37)+‘‘);

可对JAVASCRIPT不熟,如果没有函数可以直接浏览器url里写个javascript:跑出来,可这里有函数,仔细看J函数的功能是将所有数字异或2,于是弱弱的写了个C++(ACMer表示2分钟写不出这程序直接退役的了)

#include<cstdio>

#define maxn
2001

using namespace
std;

int ch[maxn]={0,106,99,113,106,34,63,34,37,83,110,114,109,77,86,68,64,85,81,88,86,85,91,115,55,101,119,101,67,67,67,99,72,101,74,83,83,77,52,117,83,67,65,67,67,79,87,117,67,67,83,71,123,76,79,99,73,110,76,83,74,82,86,82,123,70,91,85,64,76,68,49,72,68,77,68,65,83,107,112,111,65,52,67,63,37};

int main()

{

for(int
i=1;ch[i];i++)printf("%c",(char)(ch[i]^2));

return 0;

}

跑出来结果是:

hash=‘QlpoOTFBWSZTWYq5gugAAAaJgHQQO6wQACAAMUwAAQEyNMaKlNQHPTPyDYWBNF3JFOFCQirmC6A=‘

唔,最后的等号明显提示是base64,但直接解得到的是乱码,百度一下头部‘QlpoOTFBWSZTW发现是BZ2压缩

时间: 2024-10-11 16:34:51

人生第一场CTF的解题报告(部分)的相关文章

人生第一场组队赛---2014.8 zju monthly

暑期集训中段就组了队,不过一直没机会打比赛 昨天kitkat突然发现了zju要搞月赛,我想了一下题目对于我这种渣实在是有点难,于是想到干脆打一次组队赛吧,跟队友商量了一下也同意了 12点---17点  5小时 10道题 虽然难度比一般现场赛低一些 不过形式上差不多 应该还算一次不错的练习机会 比赛开始 zh0ng神从前往后读,kitkat从后往前读,我则在中间乱看 我先看了E,感觉是个dp,但是又有点模糊,kitkat读了J,一个字符串题,题意很简单,可是也没什么好的解决办法(最后发现j是全场最

CUGBACM_Summer_Tranning 组队赛解题报告

组队赛解题报告: CUGBACM_Summer_Tranning 5:组队赛第五场 CUGBACM_Summer_Tranning 4: CUGBACM_Summer_Tranning 3:组队赛第三场 CUGBACM_Summer_Tranning 2:组队赛第二场 CUGBACM_Summer_Tranning 1:组队赛第一场 CUGBACM_Summer_Tranning 组队赛解题报告

2019模拟赛09场解题报告

目录 2019模拟赛09场解题报告 目录la~~ 题一:瞬间移动 题二:食物订购 题三:马蹄印 题四:景观美化 2019模拟赛09场解题报告 标签(空格分隔): 解题报告 Forever_chen 2019.8.20 目录la~~ 题一:瞬间移动 [题面] 有一天,暮光闪闪突然对如何将一个整数序列a1,a2,...,an排序为一个不下降序列起了兴趣.身为一只年轻独角兽的她,只能进行一种叫做"单元转换"(unit shift)的操作.换句话说,她可以将序列的最后一个元素移动到它的起始位置

解题报告——2018级2016第二学期第一周作业

解题报告——2018级2016第二学期第一周作业 D 算24 题目描述 描述 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式.现在的问题是,是否存在一种方式使得得到的表达式的结果等于24. 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法). 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24.又比如,对于1,1,4,2,我们怎么都不能得到24. 输入 输入数据包括多

【未完成0.0】Noip2012提高组day2 解题报告

第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一行,包含两个正整数a, b,用一个空格隔开. 输出格式 输出只有一行,包含一个正整数x0,即最小正整数解.输入数据保证一定有解. 样例1 样例输入1 3 10 样例输出1 7 限制 每个测试点1s 提示 对于40%的数据,2 ≤b≤ 1,000: 对于60%的数据,2 ≤b≤ 50,000,000:

10.30 NFLS-NOIP模拟赛 解题报告

总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没码QAQ 现在我来写解题报告了,有点饿了QAQ.. 第一题 题目 1: 架设电话线 [Jeffrey Wang, 2007] 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务,于 是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线.新的电话线架设 在已有的N(2 <=

HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可以工作的最长时间和一个可以完成的任务的难度的最大值, 一台机器能完成一个任务的条件是这台机器的最长工作时间和能完成任务的难度值必须都大于等于这个任务,而且一台机器最多完成一个任务,假设一个任务的时间为t,难度值为x,那么完成这个任务可以赚到的钱 money = 500 * t + 2 * x; 现在

解题报告 之 SGU326 Perspective

解题报告 之 SGU326 Perspective Description Breaking news! A Russian billionaire has bought a yet undisclosed NBA team. He's planning to invest huge effort and money into making that team the best. And in fact he's been very specific about the expected res

解题报告 之 WHU1124 Football Coach

解题报告 之 WHU1124 Football Coach Description It is not an easy job to be a coach of a football team. The season is almost over, only a few matches are left to play. All of sudden the team manager comes to you and tells you bad news: the main sponsor of