这周做了合天实验室的CTF
下载下来,乍一看是.exe文件。记事本打开,出现flag{666C61677B68315F6337667D}
提交上去不对,推测是加密了,数了一下24位,应该不是md5,试试看是不是16进制。
果然,得到flag。
下载txt,打开发现全是三维数组。容易想到是RGB三原色数组。
把数组转化为图片,再看看有没有什么特别的地方。利用python的PIL库容易实现。
PIL库的安装就不多说了。参考windos,python3.x安装PIL
下面要确定图片的size(因为差别太大的size不容易看出东西来):由于数组总共61366行,即61366个像素,可以得到几种size:503* 122,1006* 61,30683*2。于是选择503 *122的size。
python代码如下:
#-*- coding:utf-8 -*-
from PIL import Image
import re
x = 503 #x坐标 通过对txt里的行数进行整数分解
y = 122 #y坐标 x*y = 行数
im = Image.new("RGB",(x,y))#创建图片
file = open('misc100.txt') #打开rbg值文件
#通过一个个rgb点生成图片
for i in range(0,x):
for j in range(0,y):
line = file.readline()#获取一行
rgb = line.split(",")#分离rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()
得到flag:
flag{youc@n’tseeme}
下载下来记事本打开:
发现是一堆乱码,但是看到
function $() {
var e = document.getElementById("c").value;
if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) {
var t = ["fl", "s_a", "i", "e}"];
var n = ["a", "_h0l", "n"];
var r = ["g{", "e", "_0"];
var i = ["it'", "_", "n"];
var s = [t, n, r, i];
for (var o = 0; o < 13; ++o) {
document.write(s[o % 4][0]);
s[o % 4].splice(0, 1)
}
}
}
document.write('');
delete _
得到代码,简单审计,容易发现,还是两种解法:
1. 根据正则表达式,破解密码,很简单,然后在文本框内输入密码,获取flag。
2. 容易直接读出flag的值。
这里破解的密码是:be0f233ac7be98aa
最后容易得到flag。
下载文件,确实是一段欢快的曲调。闲话少说,很容易想到是隐写,用audacity打开看看。
放大看看,有点像摩斯电码的感觉,短点代表.长点代表_的话,容易得到这段电码:
…../-…/-.-./—-./..—/…../-…./….-/—-./-.-./-…/—–/.—-/—../—../..-./…../..—/./-…./.—-/–…/-../–…/—–/—-./..—/—-./.—-/—-./.—-/-.-.
接下来,摩斯电码解密即可,得到flag。
5BC925649CB0188F52E617D70929191C
这题很有意思,一开始试了很久,都没试出来个像样的结果,垂头丧气之时:
低头一看,键盘上
- tgbnjuy把h包围了起来
- 8ujko9 把i包围了起来
- 5rfgy6 把t包围了起来
所以,flag就是hit。
两张一样的图片(反正我肉眼看不出差别)。
两张看上去一样的图片,我首先想到用segosolve的combiner试一下,发现可能存在一张二维码在里面,SUB就出来了一个二维码:
用工具扫描,得到flag。flag{#justdiffit}
按照说输入口令,但是发现最后一位输入不了,咋整呢?应该是设置了位长,于是用burp输入即可。
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
?>
这题其实很简单,就是要求一个变量a
md5(a)=md5('QNKCDZO') && a != QNKCDZO
由于是弱类型,这样的值应该有不少,百度一下,得到一个:a=240610708
输入得到flag。
这道题也很有意思,之前做了键盘的题是几个键包围了一个字母,但是这题,看键盘,其实是看键盘的轨迹!!
ytfvbhn 的轨迹就是a
tgbgy 的轨迹就是r
。。。
得到flag: nctf{areuhack}
传送门
很简单,打开网址,发现一张图片,burp拦截没发现什么特别的东西,那么很显然,图片有猫腻,下载,记事本打开发现flag。
原题链接
下载的文件是一堆英文字母,提示说Audrey Tang,百度得知是perl大佬,那么一定和perl有关系,第一次了解到perl语言(孤陋寡闻==),然后差了很多资料才知道这是perl里的ppencode,将perl代码加密成一堆英文字母。只要将文件加上后缀.pl,就可以当做perl脚本执行,Linux自带perl解释器,路径
/usr/bin/perl
Linux中解释出来,发现是这样的
@#@#@@#@#@#@#@#@#@#@#@#218.76.35.77:65443@#@#@#@#@#@#@@#@#@#@#@#@#
中间的像是个IP地址,但是访问发现,服务器错误。
不加端口号试一下,访问IP: 218.76.35.77 ,结果如下:
暂时懵逼。