D.I.E 选拔赛 WP
Web
正则
题目:

点击进入网页后,出现以下PHP代码:
$key='flag{**************}';
$Regular= preg_match("/xzyx.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match);
if( $Regular ){
die('key: '.$key);
}}
这段代码中,preg_match(正则表达式,匹配的字符串)匹配第一个匹配正则的子字符串,未找到返回0,找到返回1,trim($_GET["id"]) 接受ID传参过来的字符串。分析这道题需要匹配符合正则表达式的字符串才会返回flag。
补充正则表达式解释:
PHP的正则表达式要写在/ /之间。
. :匹配除换行符 \n 之外的任何单字符。
*:匹配前面的子表达式零次或多次。
{n,m}: m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooood" 中的前三个o。注意在逗号和两个数之间不能有空格。
\: 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\' 匹配 "",而 '(' 则匹配 "("。
i:标记指定不区分大小写。
关于表达式/xzyx.*key.{2,9}:\/.*\/(key*key)/i:
/xzyx.*/:表示”xzyx”后面有0-N个除换行符 \n 之外的任何单字符(N为非负整数),所以可以为xzyx。
/key.{2,9}:表示”key”后面有2-9个除换行符 \n 之外的任何单字符,所以可以为keyhello。
/ :\/.*\/ /:第一个”:”为字符冒号,”/”为斜杠”/”的转译,”.*”表示后面有0-N个除换行符 \n 之外的任何单字符(N为非负整数)。
/(key*key)/:表示”ke”和”key”之间有0-N个字符”y”(N为非负整数)。
组合一下就可以是xzyxkeyhello://keykey,输入跳转:

就看到flag了。
诗词大会
题目:

先进入网址,查看源码,看到注释里醒目的提示:

进入hint.php页面:有趣的东西出现了:

这个不就是传说中的文言文编程吗?图方便可以找一个在线文言文编程的网站,运行结果:

推测运行结果是关键密码,,进入down_flag.php页面,开始下载一个flag.zip文件,解压时会报错,利用WinRAR软件可以修复,再次解压发现需要密码才能打开,输入上面的output,就可以打开文件,里面是个flag.txt文件,内容即为flag:

Misc
Welcome
这个题目就和玩躲猫猫似的hhhh,给了一个博客网址,进去找flag,我一开始想的比较深,以为是什么隐藏的套路,后来出了hint,说flag藏在很久很久以前,于是通过时间轴找到了最早的一篇博客,在里面发现了flag:

俄罗斯套套套套套套...娃
这道题真是套娃了,因为我确实才学python没几天,就试着写了个解压的代码:
import zipfile,os
def unzip(path, zfile):
file_path = path + os.sep + zfile
desdir = path + os.sep + zfile[:zfile.index('.zip')]
srcfile = zipfile.ZipFile(file_path)
for filename in srcfile.namelist():
srcfile.extract(filename, desdir)
if filename.endswith('.zip'):
# if zipfile.is_zipfile(filename):
path = desdir
zfile = filename
unzip(path, zfile)
path = r'D:\ctf\0\Users\zrzz\tjuCTF'
zfile = r'1.zip'
unzip(path, zfile)
确实过于简单以至于没法解决这个问题,因为嵌套太多报错了QAQ,结果我突发奇想用IDA打开zip文件,结果一直点yes,竟然给它点出来了(我这大概属于及其不规范的手动暴力解题了把QAQ)期待官方题解,我一定好好学习如何写脚本!
万能IDA:

Reverse
Welcome
题目给了一个链接,进入下载压缩包easy_re.zip,利用IDA工具查看,结果可以直接看到在十六进制格式显示的窗口:

侧醒目的flag出现了,这就是签到题的快乐吗?
Crypto
看一看
这道题先是给了一长串数字,仔细观察会发现:
前三位116是t对应的AScii码,而j对应的Ascii码是106,116+106=222,正好是接下来的三位数字,于是类推,结果:
116+106 j
222+117 u
339+67 C
406+84 T
490+70 F
560+123 {
683+89 Y
77248 0
820+117 u
937+95 _
1032+97 a
1129+114 r
1243+101e
1344+95 _
1439+114 r
1553+49 I
1602+103 g
1705+104 h
1809+116 t
1925+95_
2020+54 6
2074+54 6
2128+54 6
2182+125 }
2307
由上往下连接,即为flag:tjuCTF{Y0u_are_r1ght_666}。
剩下有两道就差一点点而没解出的题,后面明白咋做了后懊悔万分呐.....总之一定要好好看题目,以及奇怪的后缀可以去掉试试.....
总结
这次比赛做(玩)的真滴很开心,以后还得多加练习QAQ

浙公网安备 33010602011771号