用010editor打开查看,发现最后含有一个B站网址
flag:
下载得到一个pdf,里面文字全是(阴阳怪气)。仔细查看,阴阳怪气也就分为三种:
就这.不会吧!就这
结合题目中给出的编码,很容易想到Ook!编码
于是,将就这.替换为.
不会吧!替换为!
就这替换为?
得到如下:
得到
这个附件有点大啊,下载得到一个游戏,(杀死耗子得经验做任务的“窒息”游戏)
解压一看
发现www的文件夹,直接点进去看,(众所周知,主要的资源全在这个文件夹里头)
index.html根网页,点进去出一个error很真实,环境没搭建怎么出东西
但这里提示我们这个data文件夹很重要
点击进入,发现一堆json文件,一开始一系列的map00x.json引人注意,点进去查看,好像是每一关的任务,但是flag均没有出现。后来,终于在Items.json这个文件里面找到flag包括之前的fakeflag也在里面。
进入一个网页,ctrl+u查看网页源码
Get10pointstogetflag
Yourpoint:
于是,介于验证码比较难认,将其图片保存,用stegesolve换个通道进行查看。
【注意】大小写要区分!!!
【一步错全盘皆输】得到
下载得到一个excel。用010editor查看504B0304修改后缀名zip发现基本上都是xml文件。放在idea中进行查看,
最后在sharedDtrings.xml发现怪异之处。
dW5jdGYlN0I3MzgzYjY3ZGU5MTA2YTZmMTBmZGJlNGU4ZWJjNjRjZSU3RA==解密得到
flag
下载附件,得到一段拨号音音频,一个txt情景步骤导入,和一个有密码的压缩包。
636806841748368750477720528895492611039728818913495104112781919263174040060359776171712496606031373211949881779178924464798852002228370294736546700438210687486178492208471812570216381077341015321904079977773352308159585335376746026882907466893864815887274158732965185737372992697108862362061582646638841733361046086053127284900532658885220569350253383469047741742686730128763680253048883638446528421760929131783980278391556912893405214464624884824555647881352300550360161429758833657243131238478311219915449171358359616665570429230738621272988581871txt中已经很清楚的告诉我们,必须要解开压缩包,才能搞清楚这串数字的含义。
靠人耳辨别是什么号码,(对我来说)简直白日做梦。
直接上工具:dtmf2num.exe
下载好后,对此执行命令:
dtmf2num.exe拨号音.wav直接出来了:
DTMF2NUM0.1.1byLuigiAuriemmae-mail:aluigi@autistici.orgweb:aluigi.org-open拨号音.wavwavesize35200formattag1channels:1samples/sec:8000avg/bytes/sec:16000blockalign:2bits:16samples:17600biasadjust:-3volumepeaks:-2947129471normalize:3296-MFnumbers:74-DTMFnumbers:15975384265得到压缩包密码为:15975384265解压后,又得到一段音频和一个txt。
通过txt,我们知道,在音频中蕴含着一个极大的线索,用于破解那串数字。
用audacity音频文件打开,查看波形,没发现啥。
于是切到频谱图,发现一个关键词tupper
一开始还不知道是啥意思,于是直接百度tupper经过多番搜索,终于找到了Tupper自我指涉公式造图
于是上脚本:(其实)那串神秘数字就是k
远处观看效果更佳哦!!
得到flag
下载附件,得到一个flag文件。
未知格式,直接用010editor打开,ctrl+f一搜unctf,flag就出了。
附件下载得到一个shadow文件。
解压后,进入run目录。并把执行命令
下载附件,拿到mouse_click.pcapng很显然,USB流量分析。
USB协议鼠标数据部分在LeftoverCaptureData域中,数据长度为四个字节。
第一个字节代表按键:
如0x00时,代表没有按键、0x01时,代表左键,0x02时,代表当前按键为右键。
第二个字节代表鼠标水平偏移量:
值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。
第三个字节与第二字节类似,代表垂直上下移动的偏移。
tshark-rmouse_click.pcapng-Tfields-eusb.capdata>data.txttshark-rmouse_click.pcapng-Tfields-eusb.capdata|sed'/^\s*$/d'>data.txt#提取并去除空行得到如下图data.txt文件
一般提取会有冒号格式为xx:xx:xx:xx
于是运行脚本maohao.py
f=open('data.txt','r')fi=open('out.txt','w')while1:a=f.readline().strip()ifa:iflen(a)==8:#鼠标流量的话len改为8,键盘为16out=''foriinrange(0,len(a),2):ifi+2!=len(a):out+=a[i]+a[i+1]+":"else:out+=a[i]+a[i+1]fi.write(out)fi.write('\n')else:breakfi.close()pythonmaohao.py3、鼠标流量转换为坐标再将所得到的鼠标流量转换为xy坐标,运行脚本mouse.py如下
nums=[]keys=open('out.txt','r')f=open('xy.txt','w')posx=0posy=0forlineinkeys:iflen(line)!=12:continuex=int(line[3:5],16)y=int(line[6:8],16)ifx>127:x-=256ify>127:y-=256posx+=xposy+=ybtn_flag=int(line[0:2],16)#1forleft,2forright,0fornothingifbtn_flag==1:f.write(str(posx))f.write('')f.write(str(posy))f.write('\n')f.close()pythonmouse.py得到:
运行gnuplot.exe将图像绘制出来
gnuplot>plot"xy.txt"gnuplot>最后得到:
很显然,图像反了。对其垂直翻转一下,flag就出了
下载得到一张二维码,只不过不全。
众所周知,一张二维码有三个定位符,补全右上角那个,即可出flag
且记,扫的时候,将二维码大小稍微调小一点。
下载附件得到一个倒影.exe用010editor打开,发现FFD8FFE0的文件头,显然这是一张jpg。
往后拉,发现最后有一串base64编码字符串。
得到一串十六进制字符串
0000000000B4000000A500100010000000006050B405106D6A9EA24E5767106D7AD58AC22940106D7AD58AC229400081001000000000000200A0478747E27616C666000000000000000200000000000000420080000000910000005297D4535E1555E5C90000801000A000F32010B405B4ECC7E9889EDF1BA30C6FF71836EBCFE9A735EFD6E501CE14109505827764B69DC37C6E2E478747E27616C66600000080000000910000005297D4535E1555E5C90000801000A04030B405shift+v复制进010editor。
注意:4030B405反一下就是504B0304说明,要把得到的十六进制字符串倒序==》倒影的真正含义。
附java脚本:
publicclassMain{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); Strings=in.nextLine(); Stringstr[]=s.split(""); for(inti=str.length-1;i>=0;--i){ System.out.print(str[i]); } }}得到:
504B03040A00010800009C5E5551E5354D79250000001900000008000000666C61672E747874E2E6C73CD96B46772850590141EC105E6DFE537A9EFCBE63817FF6C03AB1FDE9889E7CCE4B504B01023F000A00010800009C5E5551E5354D792500000019000000080024000000000000002000000000000000666C61672E7478740A002000000000000100180004922CA85DA7D60104922CA85DA7D6017675E42AE9A6D601504B050600000000010001005A0000004B0000000000修改后缀名zip。得到一个加密的压缩包。
但没有其他提示,直接暴力破解一下
得到密码:658745
解压得到flag
下载得到225张杂乱无章的jpg图。解法很简单,就是将这图拼起来即可。
1、montage命令
(kaliLinux)安装命令:
apt-getinstallgraphicsmagick-imagemagick-compat进入解压后的文件夹目录下,执行命令
montage*.jpg-tile15x15-geometry+0+01.jpg得到:
pip3installnumpypip3installopencv-pythonpip3installmatplotlibpip3installpytestpip3installpillow安装完成后,打开requirements.txt修改里面库对应的版本。
此为版本号,比如我是:
numpy==1.18.4opencv-python==4.4.0.46matplotlib==3.2.2pytest==4.6.11pillow==6.2.1再执行以下命令。
pip3install-rrequirements.txtsudoapt-getinstallpython-tkpip3install-e.安装完成后,将之前合成的1.jpg拖到gaps-master该目录下,执行以下命令:
【注意】一定要控制pieces等于图的总张数
最后得到
flag即为:
下载得到rsa加密脚本,比较简单:
下载得到一个txt
e=18437613570247445737704630776150775735509244525633303532921813122997549954741828855898842356900537746647414676272022397989161180996467240795661928117273837666615415153571959258847829528131519423486261757569454011940318849589730152031528323576997801788206457548531802663834418381061551227544937412734776581781n=147282573611984580384965727976839351356009465616053475428039851794553880833177877211323318130843267847303264730088424552657129314295117614222630326581943132950689147833674506592824134135054877394753008169629583742916853056999371985307138775298080986801742942833212727949277517691311315098722536282119888605701c=140896698267670480175739817539898638657099087197096836734243016824204113452987617610944986742919793506024892638851339015015706164412994514598564989374037762836439262224649359411190187875207060663509777017529293145434535056275850555331099130633232844054767057175076598741233988533181035871238444008366306956934显然,这e非常大。马上想到是rsawiener-attack。于是修改脚本如下:
得到d:
74651354506339782898861455541319178061583554604980363549301373281141419821253有c、e、d、n接下来,有手就行,直接上脚本!
显然题干给出的是一种未知编码的字符串
ottttootoootooooottoootooottotootttootooottotttooootttototoottooootoooottotoottottooooooooottotootto先来看一下,里面就涉及两种字母,很容易让人想到二进制,尝试转字符串,失败。
先将o替换为A,t替换为B。
先考虑有没有壳。用PEID一查无。安心拖入IDA
先shift+f12查看字符串。
发现success敏感词,进行追踪,来到函数sub_401550()按F5
__int64sub_401550(){charStr1;//[sp+20h][bp-60h]@1sub_40B300();puts("Welcome!PleaseInput:");sub_419C00("%1000s",&Str1);if(!strcmp(&Str1,&Str2))puts("success!");elseputs("fail!");system("pause");return0i64;}很快发现,strcmp是Str1与Str2对比,因为Str1输入,于是追踪Str2
发现在sub_4015DC函数,进行查看
得到了一个.exe和一个txt
txt如下:
313131303130313031313031313130303131303030313130313131303130303031313030313130303131313130313130313031303130303031313031303030303130303030303030313131303130303031303131313131303131303130303130313131303031313031303131313131303131313030313030313130303130313031313030303031303031313030303130303131303030313031313131303031303130313131313130313130303031313030313130303030303031313030303030303131303030313031313131313031首先对babypy.exe进行壳检查,发现无壳。
这个时候,我们需要对exe进行反编译为python源码。
执行命令:
注意到babypy重点源文件,但是由于反编译不是十全十美的,他丧失了文件头,因此没有后缀.pyc于是,打开一个本身的pyc,查看文件头
420D0D0A00000000
于是给他补上:
其实是忘记了,出题方给的重要讯息!那个tip.txt
于是,解题脚本如下:
importlibnumm=0x313131303130313031313031313130303131303030313130313131303130303031313030313130303131313130313130313031303130303031313031303030303130303030303030313131303130303031303131313131303131303130303130313131303031313031303131313131303131313030313030313130303130313031313030303031303031313030303130303131303030313031313131303031303130313131313130313130303031313030313130303030303031313030303030303131303030313031313131313031str=libnum.n2s(m)print(libnum.b2s(str))跑出flag:
下载得到一个run.exe加之题目“反编译”,与上题一样的思路。