CTF练习week04
1. baby_web
题目描述:想想初始页面是哪个
访问网址,就是一个大写的HELLO WORLD
F12查看源码,发现并没有隐藏什么
提示说想想初始页面是哪个,访问url+index.php,结果发现访问的还是url+1.php
使用火狐浏览器的开发者选项,点击网络,查看消息头,发现index.php的location参数被设置了1.php,蓝色箭头所指即为flag
2. Training-WWW-Robots
访问网址,一大串英文
翻译一下
意思大概是这道题可以让你了解机器查询的标准,和robots.txt web爬虫用来检测是否允许其搜索你的网站
这题主要考查robots协议
进入robots.txt页面
按照提示访问f10g.php,得到flag
3. A_Beautiful_Picture
下载附件,是一张图片,应该进行了隐写
右键属性
用winhex打开图片,第二行前四位是宽,后四位是高。将高改为03e8
保存并打开图片
4. 假如给我三天光明
下载附件,解压得到一个压缩包和jpg图片。
打开jpg,题目说是是假如给我三天光明,猜想到盲文
百度盲文
对照图片解码,结果是kmdonowg
打开压缩包发现被加密了,刚才的应该是密码,输入密码解压,得到一个wav文件
用Audacity打开文件
波的宽度分辨长短音,比较细的就是短音,代表 .
;比较粗的就是长音,代表 -
;
得到摩斯电码:
-.-. - ..-. .-- .--. . .. ----- ---.. --... ...-- ..--- ..--.. ..--- ...-- -.. --..
摩斯密码解密,得到flag
5. just_a_rar
下载附件,解压得到一个加密了的压缩包
提示是四位数,用ARCHPR爆破一下,得到口令是2016
输入密码解压文件,得到一张名为flag.jpg的图片,flag应该就在这里面,用010Editor打开图片,搜索flag
6. LSB
下载压缩包,解压得到一个图片
用Stegsolve打开,进行异或
在通道为0时发现了异常
将所有通道设为0,然后保存为flag.png
打开图片,发现是二维码
扫描后得到cumtctf{1sb_i4_s0_Ea4y}
7.转轮机加密
下载附件后,得到:
首先托马斯-杰弗逊转轮加密由三串字符串组成,第一部分为加密表,第二部分为密钥,第三部分为密文 。加密表就是我们需要利用密钥和密文来进行加密。
首先查看密钥第一个字符为2,因此我们需要到加密表中去查找第2行的数据
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
这里我们再利用密文的第一个字符N进行旋转,N在这里的作用就是旋转过后的第一个字符即为N
即将上图中的红色部分移到最前面,因此我们可以来对加密表中的第一段密文进行解密:
原 先:KPBELNACZDTRXMJQOYHGVSFUWI
旋转后:NACZDTRXMJQOYHGVSFUWIKPBEL
经过一番观察后,密文里面的字母在对应的密钥行里只出现了一次。根据密钥我们调整一下密码表:
然后根据密钥调整:
然后发现了倒数第八列FIREINTHEHOLE,可以组成词组,即fire in the hole,这就是flag所在。
把FIREINTHEHOLE转化为小写,即为flag
wp里面的的python脚本
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import re
sss = '1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <'
m = 'NFQKSEVOQOFNP'
# 将sss转化为列表形式
content=re.findall(r'< (.*?) <',sss,re.S)
# re.S:DOTALL,此模式下,"."的匹配不受限制,可匹配任何字符,包括换行符
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
print(content)
vvv=[]
for i in range(13):
index=content[iv[i]-1].index(m[i])
vvv.append(index)
print(vvv)
for i in range(0,26):
flag=""
for j in range(13):
flag += content[iv[j]-1][(vvv[j]+i)%26]
print(flag.lower())
运行脚本
脚本使用起来很方便,以后还是得多练习写脚本的能力
8. 大白
下载附件
发现图片不完整,应该进行了隐写
用winhex打开图片,第二行前四位为宽,后四位为高
图片不完整,我们修改高度将 00 00 01 00改为00 00 02 00
保存后,打开图片
9. simple_js
题目
打开网址后,看到了一个提示框
输入密码后提示为假密码
不知道是什么意思,查看源码后看到了一串字符串
\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
发现这串字符串一直出现\x,与url编码中的%,于是将\x全部转化为%
%35%35%2c%35%36%2c%35%34%2c%37%39%2c%31%31%35%2c%36%39%2c%31%31%34%2c%31%31%36%2c%31%30%37%2c%34%39%2c%35%30
url解码可得ascll码
将ascll码转化为字符,即为flag