ctf那些坑03
1、ipspoofing
- 网站信息:http://xxxx.com
- 提示信息:ipspoofing
- 访问网站,发现是个静态网站,解读提示信息:ipspoofing又叫ip欺骗,猜想应该还需要构造ip访问,但是不知道构造什么ip;访问那个网页,所以只有乱转,查看网页源码,可以在最下面看到一个跳转,是跳向一个php网站
访问该页面发现是一个登陆页面,提示如果不是管理员请离开,所以我就猜测用户名可能是administrator,然后猜测用户名密码登陆发现
因为它提示出现的太快,我猜可能与js有关,就用调试插件查看的下提示信息的位置发现
知道许可的ip,通过查看网页源码,在最下面可以看到用户名密码;
然后登陆得到结果
2、phpinfo
- 网站信息:http://xxxx.com
- 提示信息:phpinfo
- 访问网页出现的是一个phpinfo页面,其余什么都没有,看上面的链接可以发现有点可操作性
根据phpinfo可以知道网站根目录,我们要找flag信息,我就猜了下flag信息在网站根目录下(这里我是猜的,被我猜中了,有个大佬用目录扫描器扫出来flag.php,我没试,有兴趣的可以试一下),用文件包含试着读一下
因为php://filter是以base64编码读取出文件内容的,所以去解码就得出flag信息了
3、GetFlag
- 网站信息:http://xxxx.com
- 提示信息:GetFlag
- 访问网站,页面给的提示信息是我可以登陆然后下载文件
进入登陆页面,发现登陆有验证码,是用MD5加密的,所以需要一个脚本跑出验证码;
import hashlib
def md5(data):
m = hashlib.md5()
m.update(data)
a = m.hexdigest()
return a
b = 'abcdefghijklmnopqrstuvwxyz1234567890'
for i in b:
for j in b:
for k in b:
for l in b:
for m in b:
if (md5(i+j+k+l+m)[0:6])=='加密的验证码':
print i+j+k+l+m
跑出验证码;我觉得验证码一是个坑,用户名和密码应该不会太卡我们,在网页中没有找到有用的用户名密码,我就用万能密码试了下,结果成功了
进去过后给了三个文件下载下来发现告诉我flag在根目录,所以我们得去下载根目录的flag文件,如何知道下载的链接呢;查看网页源码可以看到那三个文件的下载链接,直接复制去下载flag文件,会得到php源码
通过源码我们可以知道post传入一个flag就能得到我们想要的信息,通过下面的eval与if判断可以知道flag=flag所以我们直接去访问flag.php并post传入flag;这里返回的信息会被解析,可以抓包得到flag
4、pyscript
- 网站信息:http://xxxx.com
- 提示信息:pyscript
- 访问网站,它提示让我输入答案,可是我怎么知道答案是什么,第二步当然是看看网页源码有没有提示信息啦,结果还真有
让我找出明文,还要10秒钟提交答案,这是考验我手速?根据提示应该是想让我们写python脚本来完成一系列操作,并获得返回的flag信息;
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]
print key1
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)
结果