[cybrics 2020] web wp
金砖五国CTF?感觉还是个大一点的比赛,看得到其他国家的队伍
全程看题陪跑,比赛还没结束已经开始写wp了呜呜呜呜
Hunt
用到了谷歌的验证码服务没翻墙做不了。。。。是不是该考虑一下充点钱了
国赛国赛,考的一个没听说过的RC4加密算法,只要能把加密算法做出来就是很简单的题目了
打开题啥也没有抓包啥也没有就一句Welcome To Find Secret,直接猜get提交一个secret或者路由secret好吧(我是不是也开始成为赛棍了)
路由secret有效,给一句Tell me your secret.I will encrypt it so others can’t see,在get提交一个secret,给出了加密的奇奇怪怪的字符串
测试测试,乱输的时候出现了报错,用的flask,直接展示了部分源码
if(secret==None):
return 'Tell me your secret.I will encrypt it so others can\'t see'
rc=rc4_Modified.RC4("HereIsTreasure") #解密
deS=rc.do_crypt(secret)
a=render_template_string(safe(deS))
if 'ciscn' in a.lower():
return 'flag detected!'
return a
文件包含新知识,题目第一个点看的我莫名其妙的
进来就是一句username/password error,源码里有一句注释<!–md5($secret.$name)===$pass –>也是看得人不明所以,也没说是post还是get传参,本来感觉应该是一个哈希扩展攻击,但是secret的长度未知,好像也没法进行。随便输了点东西之后给了我一个名字叫Hash的cookie,就直接把md5($secret.$name)给我了???把密码换成cookie值就可以了
然后会给一个flflflflag.php,但是打开就重定向到404,所以还是用burp抓包
给了一个include $_GET[‘file’];简单测试之后,input,data等字段都给过滤了,还是没有想象中那么简单
一个XSS题,开局一个登录框,试了一下admin被注册了,过滤了一些东西,注册一个号登进去看发现并不是注入,给了一个feedback界面提交反馈,大概就能猜出来是XSS了
在feedback界面查看源码可以看到一个被注释了的过滤
if(is_array($feedback)){
echo "<script>alert('反馈不合法');</script>";
return false;
}
$blacklist = ['_','\'','&','\\','#','%','input','script','iframe','host','onload','onerror','srcdoc','location','svg','form','img','src','getElement','document','cookie'];
foreach ($blacklist as $val) {
while(true){
if(stripos($feedback,$val) !== false){
$feedback = str_ireplace($val,"",$feedback);
}else{
break;
}
}
}
xml注入,全新知识点
打开题目可以发现username和password是以xml格式提交的,第一反应就是xxe。
xxe不会,随便搜了几个payload来打,回显格式不对,估计是没机会了,直接搜wp进行学习
找到一个xpath注入的文章https://www.tr0y.wang/2019/05/11/XPath%E6%B3%A8%E5%85%A5%E6%8C%87%E5%8C%97/
注入整体思路和SQL注入类似,不过这里没什么过滤,这个注入也没注释符,手动闭合一下引号
再贴一个抄来的脚本