若想得到想要的东西,至少付出等价的付出
前言
这是学校举办的第三次CTF比赛,也是第三次双月赛。时间定得很好(五一),只是还有各种杂事缠身,没能花太多时间做,所以只做出了几个简单的题,等考完试后再找时间看看其他题吧。
Web
web签到
1.打开连接,发现:
提示试试本地文件包含搜索cxk.php
,而且通过page参数传值,如果不指定page则输出page!!!!
2.直接访问cxk.php,发现为相关配置信息等,没有发现有用的信息。
3.直接访问源码,通过?page=php://filter/read=convert.base64-encode/resource=cxk.php
,访问得到
1 | PD9waHAgDQpwaHBpbmZvKCk7IA0KLypmbGFne0N1bXRDVEZfdGhpc19pU19hX1JFbEx5X2ZMYUchISF9Ki8NCj8+DQo= |
4.base64解码,得到flag:
1 |
|
Crypto
古典密码签到
1.题目给出:
1 | 6A757474616967796B68706D6A7972656361 |
2.古典密码,想到可能是维吉尼亚密码,或者是变异凯撒等,但发现密文和秘钥都是16进制的,所以先转为字符穿得到:
1 | juttaigykhpmjyreca |
3.在线网站一个一个试,发现为维吉尼亚加密,解密得到flag:
现代密码签到
1.题目给出:
1 | zSLWE5Fk7Sg3mlltw9l2N7dhuADvk2HvWYU= |
2.看着似乎是base64,先解码看看,发现密文无法解。但是key可以,而且通过两此base64解密后得到key=cumtflag
3.接着便是考虑是何加密了,此题明显是对称加密,在现代密码中,常见的有DES,AES,RC4,RC5,A5等,还是一个一个试,最后发现为RC4,解密得到flag:
easyxor
1.此题名为简单异或,下载后打开得到:
1 | import libnum |
2.由此可知,需要写出相应的解密函数,在此之前,先了解python2中的libnum模块
libnum库是一个关于各种数学运算的函数库,它包含common maths、modular、modular squre roots、primes、factorization、ECC、converting、stuff等方面的函数
s2n()
: 字符转数字(数字:十六进制,十进制都行)n2s()
: 数字转字符b2s()
: 二进制转字符串s2b()
: 字符串转二进制
其他:可参考: python libnum库安装使用方法
3.未给提示前,尝试了几种解密,都没成功。后给出提示如下
hint : Decryption is equivalent to continuing encryption
4.解密相当于继续加密,也就是说加密函数继续加密,就会得到明文。即此加密为一个循环,那么我们只需要继续加密,当加密得到的内容和所给的密文相等时,此时被加密的内容即为相应的明文。
5.下面对函数进行相应修改:
1 | # -*- coding:utf-8 -*- |
6.得到flag
encode
1.下载得到1.pyc
,关于pyc
文件,Python在执行.py
文件的时候。将.py
形式的程序编译成中间式文件(byte-compiled)的.pyc
文件,这么做的目的就是为了加快下次执行文件的速度。同时,可以一定程度防止源码泄漏。
2.首先,进行反编译,不同python版本编译后的pyc
文件是不同的,这里直接找了网站:在线工具进行反编译,得到:
1 | import base64 |
3.接下来就很简单了,写出相应的解密函数,如下:
1 | import base64 |
运行得到flag
Misc
Whoami???
1.查看题目,发现:
2.这个,首先想到的是代理服务器,尝试几次发现不对,基础不行,那就爆破吧:使用burpsuite中的字典进行爆破:选了很多字典,爆破时花了不少时间。
3.根据响应长度不同,发现有两个答案,为teapot和teapots,查看响应内容,得到flag。