CTF题2
题1:ipspoofing
直接访问,查看源码都没发现什么把网页啦到最下面
点击进入后发现是一个登陆界面,在登陆界面查看网页源码,发现用户名和面
直接在网页登陆发提示IP不在范围内,通过Burp抓包登陆看看
发现提示了一个127.0.0.1的IP,伪造一个IP看看,获得flag
题2: phpinfo
直接访问就是一个phpinfo()的放回信息,而且链接变成了 index.php?path=phpinfo.php
尝试去包含以下flag.php,网页是白的并没有报错,查看网页源码也没什么任何消息,肯定是解析了这个文件使用没回显
尝试文件流看看
题3:GetFalg
直接访问进入
有一个验证码的提示,但是只给出了验证码在MD5加密后的前6位,而且刷新网页这个值还会改变。猜测验证验证码是纯数字,但是不行有部分不能跑出来,猜测是数字加字母,自己写写个一个简单的python脚本,通过python脚本猜解验证码
标记的地方就是网页刷新变化的地方,跑下当前的验证码
得要验证码,用户和密码就找不到提示的地方,用户密码就大胆尝试万能密码,发现报错提示有2个单引号重新制定万能密码: admi' or 1=1
发现是通过2个单引号闭合的变量从新构造万能密码 admin' or '1'='1
进去后发现3个可以下载的文件,下载后发现没什么信息,于是查看网页源码发现3个文件调用的链接
随意拼接一个访问看看http://106.75.26.211:2222//file/download.php?f=hello.txt,发现可以直接下载,尝试文件包含
猜测尝试去访问根目录下的flag.php,发现../不管怎么调都没真确的,尝试包含绝对路径
http://106.75.26.211:2222/file/download.php?f/file/download.php?f=/var/www/html/flag.php然后下载到了一个php的文件
意思是将post参数的flag赋值给变量spaceone然后判断是否为flag,然后用file_get_contents方法返回helloctf.php的内容,注意这里的helloctf.php是做了过滤的,不能用任意文件下载来获取。然后用firefox的hackbar插件post一个flag=flag;就能读取里面的内容
$f = $_POST['flag'];
if ($spaceone === 'flag'){
echo file_get_contents("helloctf.php");
}
直接去访问http://106.75.26.211:2222/flag.php然后加上POST的参数
查看源码
获得flag
题4:pyscript
写个脚本python脚本
import urllib,urllib2,json import hashlib import re import requests url = 'http://106.75.108.111:1111' def sha_1(data): sha_1 = hashlib.sha1() sha_1.update(data) sha = sha_1.hexdigest() return sha def key(key1,key2): c='0123456789' str1 = key1 cipher = key2 for i in c: for j in c: for k in c: if sha_1(i+j+k+str1) == cipher: print (i+j+k) return i+j+k def get_info(): r = requests.post("http://106.75.108.111:1111") key2 = r.headers['Ciphertext'] cookies = r.cookies html = r.text res = r'\+(.*?)\)' key1 = re.findall(res,html)[0] return key1,key2,cookies def postx(number,cookies): cookies = cookies values={'pass':number} response = requests.post("http://106.75.108.111:1111",cookies=cookies,data=values) return response.text def sum(text): res = r'<!--.*?([\d\+\-\*]+).*?-->' key3 = re.findall(res,text)[0] result = eval(key3) return result if __name__ == '__main__': (key1,key2,cookies)=get_info() number = key(key1,key2) result1 = postx(number,cookies) result2 = sum(result1) print result2 print postx(result2,cookies) |