最近在整理一些CTF题,觉得很有意思,觉得有必要一下!CTF对题目说明很重要,请务必重视!
1.Robot
熟悉web的人,看到题目应该想起robots协议,也被称为爬虫协议、机器人协议,网站通过robots协议告诉搜索引擎,哪些页面可以抓取,哪些页面不能抓取。
当一个网页爬虫爬去站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。当您对网站包含不希望被搜索引擎收录对内容时,才需要使用robots.txt文件。
可以尝试去访问网站对robots.txt文件
robots.txt文件暴露了一个php文件,访问php文件没有显示,查看网页源代码发现flag
2.seelog
由题猜出存在log目录
打开acess.log文件,查找状态吗为200的日志记录,可以发现一个登录的路径
访问该路径即可得到flag
3.VID
进入页面查看网页源代码可以看到一个index.php.txt的注释,访问该文件,可以看到一大片格式化输出的东西,这些代码是使用VLD输出的中间代码。
VLD(Vulcan Logic Dumper)是一个在Zend引擎中,以挂钩的方式实现的用于输出PHP脚本生成的中间代码(执行单元)的扩展。 它可以在一定程序上查看Zend引擎内部的一些实现原理,是我们学习PHP源码的必备良器。
如下为VLD输出对PHP代码生成对中间代码信息:
- Branch analysis from position 这条信息多在分析数组时使用。
- Return found 是否返回,这个基本上有都有。
- filename 分析的文件名
- function name 函数名,针对每个函数VLD都会生成一段如上的独立的信息,这里显示当前函数的名称
- number of ops 生成的操作数
- compiled vars 编译期间的变量,这些变量是在PHP5后添加的,它是一个缓存优化。这样的变量在PHP源码中以IS_CV标记。
op list 生成的中间代码的变量列表
在命令行下执行下列语句,使用VLD拓展展示信息
php -dvld.active=1 1.php
VLD拓展信息显示,有3个参数通过GET方式传递,构造URL
http://106.75.26.211:1111/?flag1=fvhjjihfcv&flag2=gfuyiyhioyf&flag3=yugoiiyhi
下载1chunqiu.zip文件,发现一些源代码文件
访问http://106.75.26.211:1111/1chunqiu/login.html
查看login.php源代码,发现有过滤,但是有办法绕过。
用%00就能闭合吃掉转译加上的‘\’SQL语句,过程:%00’–>\0’–>\’–>\’,用burp suite抓包注入,可以拿到flag
4.天下武功唯快不破
访问IP,根目录/u/目录下慧生成一个随机命名的文件,并只存在10秒
自写python脚本爆破文件名
import requests
import hashlib
for i in range(1,1000):
m = hashlib.md5()
data = m.update(str(i).encode('utf-8'))
url = 'http://106.75.26.211:3333/u/'+ data +'.txt'
res = requests.get(url)
if(res.status_code == 200):
print(res.text)
break
脚本执行时间较长,要多试几次
5.fuzzing
burp抓包分析
返回包提示您的IP不在大内网中,数据包头中添加X-Forwarded-For,伪造IP
返回包头部有提示:m4nage.php
网页访问该地址,构造POST数据包传入key值
传入的key值不正确,并给出了key值的md5加密值和key值前几位,写个脚本爆出key值
import hashlib
def md5(data):
m = hashlib.md5()
m.update(data)
a = m.hexdigest()
return a
a = 'ichunqiu'
b = 'abcdefghijklmnopqrstuvwxyz1234567890'
for i in b:
for j in b:
for k in b:
for l in b:
for m in b:
if md5(a+i+j+k+l+m)=='5a2a7d385fdaad3fabbe7b11c28bd48e':
print(a+i+j+k+l+m)
爆出key值
又是一堆返回信息,两个重要信息,x0.txt 和 经过authcode函数加密的flag,访问x0.txt,页面是一段php源码,应该是解密函数。
函数有四个参数,将刚刚截取的密文传给
string,key值传给
key,运行函数,可以得到flag值。
到此结束,收获颇多,感谢各位老大的指导!