-geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可
这个很明显了看起来像栅栏加密,下面是CTFcrack工具对其直接解密得到解密:qwlr{ddneq_@dpnwzgpc%nzqqpp_*}
1.GPX(GPSExchangeFormat,GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式。
放大发现每个点都有序号,一共17个点,然后每个点都对应一个国家的名称,按照顺序记录下来
发现前面7国家城市的首字母组合BITSCTF就是flag提交的格式首字母。那么组合构成flag:BITSCTF{MAPTHEHACK},提交发现错误
再次查看文件中有一段注释是:Useappropriatebracketsandunderscorestoseparatewordsifyousucceed(如果成功,请使用适当的括号和下划线分隔字符)
那么重新用括号和下划线分割符号组合flag.
最终flag为:
BITSCTF{MAP_THE_HACK}
使用以下python脚本进行转换成ascii:
该文本文件中的TTL值只有4种值:63/255/127/191,并且根据题目的介绍我们知道数据隐藏在这些值里,那么就比较容易想到的是信息隐藏在二进制中。
TTL=127--》01
TTL=191--》10
得到一个字母对应的8位即:01100110,即字母为:f
如果传输4个就是一字节,取前面的2位组成8位,对照二进制字母表,可以发现前面是ffd8,jpg图片标志
通过python脚本将ttl.txt提取转换后的数据并保存为图片,是因为二进制转成ASCII时发现是jpg文件格式。
f=open('ttl.txt','r')TTL=f.readlines()p=[]foriinTTL:p.append(int(i[4:]))s=''foriinp:ifi==63:a='00'elifi==127:a='01'elifi==191:a='10'elifi==255:a='11's+=aprint(type(s))print(s)importbinasciiflag=''foriinrange(0,len(s),8):flag+=chr(int(s[i:i+8],2))flag=binascii.unhexlify(flag)wp=open('res1.jpg','wb')wp.write(flag)wp.close()
用ps拼接成二维码图片
通过QRresarch二维码扫描工具读取出内容出来:
扫描图二维码得到字符串:“扔下内衣真有一线生机????交出内裤才有活路!!!!“。
发现二维码中心还有一个二维码,将小二维码截取出来,扫码得到flag内容:
channel1:无波形,是主输出端MOSI
channel2:波形宽度不一,携带数据,为主输入端MISO
channel3:数据传输是低电平,为CS偏选端
仔细观察,在安装软件协议的条款里面发现了一些关于和flag有关的信息:YOUMAYSUBMITTHISTOGETTENPOINTS(你可以提交这段字符串获得标识)。
pythonbwm.pydecodepen.pngapple.pngflag.png
题目名称:黄金六年
题目附件:
题目writeup:
下载附件,对其解压得到一个mp4视频文件,通过winhex打开,发现在末尾隐藏的base64加密字符串
做这种题目着实应该把屏幕调亮一点,最后一张二维码找了好久死活找不到,调亮了屏幕之后就立马找到了。
题目名称:3-1
下载附件,对其进行解压,得到一个二进制文件flag,通过file命令查看二进制文件flag,发现文件格式为rar压缩包
fileflag
让我们编写一个sh脚本,并调用fcrackzip命令递归地破解和提取zip文件:
#!/usr/bin/envbash
while[-e*.zip];do
files=*.zip;
forfilein$files;do
echo-n"Cracking${file}…";
output="$(fcrackzip-u-l1-6-c'1'*.zip|tr-d'\n')";
password="${output/PASSWORDFOUND\!\!\!\!:pw==/}";
if[-z"${password}"];then
echo"Failedtofindpassword";
break2;
fi;
echo"Foundpassword:\`${password}\`";
unzip-q-P"${password}""$file";
rm"${file}";
done;
执行sh脚本:
bashcrack_zip.sh
通过fackzip的复杂密码对其进行爆破,发现爆破出来的密码为:boyzz
./fcrackzip-u-ca1-l1-612475.zip
unzip-q-Pb0yzz12475.zip
最终falg为:
BallsRealBolls
题目名称:双色块
方法一:
下载附件,对其解压,得到一个out.gif的动态图片,且只存在绿色和紫色两个颜色,分布不均匀
按照紫色1,绿色0的规则按照先后顺序排列出了以下数据:
011011110011100001000100011011000111100001001011001010110100100000111000011101110111001101101001010110000110010100101111010001010101001001000110011100000100000101001101011000010100001001010000011010010100100101100011011010100011000101110011010010000111100101000111010011110100110101101101010100010100010001101011010010110010101101110101010110000111001101010110010110100110011101110010011001010011010101000100010100110101100001110111001111010011110101101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000
按照紫色0,绿色1的规则排列出以下数据:
100100001100011110111011100100111000011110110100110101001011011111000111100010001000110010010110101001111001101011010000101110101010110110111001100011111011111010110010100111101011110110101111100101101011011010011100100101011100111010001100101101111000011010111000101100001011001010010010101011101011101110010100101101001101010010001010101001111000110010101001101001011001100010001101100110101100101010111011101011001010011110001000110000101100001010010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111
得到的加密字符串:
o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh
这应该是des加密或者base64,但是有提示key,所以应该是des加密,key是上面的图片内容ctfer2333,正常来说des结尾是=,最后一串h去掉就好了。
通过bwm.py脚本可以将2张图片合成一张图片flag.png
先把16进制3EAAAAA56A69AA55A95995A569AA95565556都转成2进制,得到:1111101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110
又得知曼切斯特是从低到高跳变表示“1”,从高到低跳变表示“0”,即01->1,10->0。可以看到二进制除了前4位,后面都是10,01,差分曼切斯特有跳变为"0",无跳变为"1
因此将编码进行曼切斯特解码:
00000000001001001101100010001001001111001010010110000100000110000001
转成16进制得到:24d8893ca584181
又得知第一个ID为0x8893CA58的温度传感器就在第一个曼切斯特解码24d8893ca584181中,是第4位到11位为:8893ca58,转换成大写为8893CA58
根据上面原理,可将3EAAAAA56A69AA556A965A5999596AA95656,转换成曼切斯特解码为24d8845abf34119,取第4位到11位,最终为:8845ABF3
那么flag为:
flag{8845ABF3}
方法二:
python脚本(这里需要将3E前缀去掉,因为转换成二进制为1111,不存在曼切斯特解码特性)
char="AAAAA56A69AA556A965A5999596AA95656"result=char.replace("5","0101").replace("6","0110").replace("9","1001").replace("A","1010")num=len(result)flag=""flag_final=""result="0"+resultforiinrange(1,num,2):ifresult[i:i+2][0]!=result[i-1]:flag+="0"ifresult[i:i+2][0]==result[i-1]:flag+="1"printhex(int(flag,2)).upper()[2:]
发现func_globals被过滤了,我们使用__getattribute__绕过
最终payload:
看到很多注入语句,sql注入语句都是字符32开始的,第一波语句结束字符是102,恰好对应的ascii为f
第二波语句结束字符是108,对应的ascii为l
第三波语句结束字符是97,对应的ascii为a
第四波语句结束字符是103,对应的ascii为g
第六波语句结束字符是123,对应的ascii为{
以此类推得到flag:flag{c2bbf9cecdaf656cf524d014c5bf046c}
也可以通过python脚本获取
importreimportosdefgetflag(contents):req_reg=re.compile(r'0,1\),(\d+),1\)\)=(\d+)%23')results=req_reg.findall(contents)flag_map={}forresultinresults:ifresult[0]inflag_map:ifint(result[1])>flag_map[result[0]]:flag_map[result[0]]=int(result[1])else:flag_map[result[0]]=int(result[1])flag=""foriinrange(1,39):flag+=chr(flag_map[str(i)])print(flag)if__name__=="__main__":basedir=os.path.dirname(__file__)filename="misc.pcapng"file_path=os.path.join(basedir,filename)print(filename)withopen(file_path,'rb')asf:getflag(f.read())
又得知第一个ID为0x8893CA58的温度传感器就在第一个曼切斯特解码24d8893ca584181中,是第4位到11位为:8893ca58,ID转换成大写为:8893CA58
根据上面原理,可将3EAAAAA56A69AA556A965A5999596AA95656,转换成曼切斯特解码为24d8845abf34119,取第4位到11位,ID转换成大写为:8845ABF3
或者
根据计算机网络报文首部的一些学习,这里我进行了类比,可能校验位应该是最后几位,依次尝试过都无果,但想到,除了最后2位不同,中间ID不同,其他均相同,可见校验位就是最后2位,那么校验位的计算应该是用CRC进行计算,而前面的位数是7位,尝试计算,但是得出的值并不是预计的。后来想到可能缺位了,故又往前算了一位:得到:024D8893CA584181和024D8845ABF34119对024D8893CA5841和024D8845ABF341进行CRC8运算
可以得到81和19,与猜想一致
下面就可以用这个方法解出flag带入ID:DEADBEEF和BAADA555得到:024DDEADBEEF41
024DBAADA55541
计算CRC8,分别得到:B5和15
也可以通过脚本获取:
#!/usr/bin/pythondefcrc(x,y):while(x>y):l=len(bin(x))-len(bin(y))t=int(bin(y)[2:]+'0'*l,2)x^=treturnxm=0foriinrange(0x200):ifi<100:continueifcrc(0x24d8893ca584100,i)==0x81andcrc(0x24d8845abf34100,i)==0x19:m=iprintibreakprinthex(crc(0x00024ddeadbeef4100,m))printhex(crc(0x00024dbaada5554100,m))