2017第二届广东省强网杯线上赛
who are you:
题目类型:web
题目描述:打开链接,得到一个页面:
解题方法:这句话的意思说:对不起,你没有权限,先查看一下网页源码,没有发现什么有用的信息,然后再扫描一下目录:
然后访问一下这几个目录,发现都不行,返回的都是:对不起,你没有权限
用bp来抓包看一下:
发现这里cookie里面有个role(角色),把它进行base64解密一下:
Zjo1OiJ0aHJmZyI7
f:5:"thrfg"; //base64解密后
看到这个thrfg在想他是一个什么,感觉像是一个用户名,前面访问的说:我们没有权限,那这里我们将thrfg改成admin管理员权限看一下,然后base64编码:
f:5:"admin";
Zjo1OiJhZG1pbiI7 //base64编码
发现还是不可以,还是没有权限,最后去网上看了一下WP说:thrfg是guest的rot13编码,这个时候就恍然大悟,guest是客户普通用户的意思,所以就一直没有权限来访问,前面我们也不能直接改成admin,要把admin进行rot13编码后才可以:
admin
nqzva //admin的rot13编码
f:5:"nqzva";
Zjo1OiJucXp2YSI7 //base64编码
成功!然后这里它给出让我们POST上传一个文件名和文件内容,我们先随便上传点东西看一下
得到一个上传路径,我们访问一下看看:
返回我们上传的数据,这里我们就可以来试着上传我们的一句话木马试试:
这里一上传就返回NoNoNo!,说明有东西被过滤了,我们来多次尝试看看是什么被过滤了
经过多次试验,发现他把 < 尖括号给过滤了,当我们只要输入一个<尖括号就会返回NoNoNo!
我们猜测这样应该是有一个正则表达式的匹配,如果匹配到有<就会上传失败。而且正则表达式匹配常用的函数是preg_match()。这个函数有个漏洞,如果传入的参数为数组,它将直接FALSE。这样我们猜测可以另data为数组来进行绕过:
filename=1.php&data[]=<?php @eval($_POST['1']);?
上传成功!用蚁剑来连一下看看:
发现连不上,我们访问上传路径看一下它有没有上传成功
意外惊喜,在访问上传路径就直接把flag给我们了:
flag{e07cd440-8eed-11e7-997d-7efc09eb6c59}
总结:这里的cookie里面的权限这里被设置了一点改变它将role角色先进行的rot13编码,很难想到,还有最后上传这里把<尖括号给过滤了
标签:编码,base64,上赛,admin,一下,who,杯线,权限,上传 From: https://www.cnblogs.com/xyweiwen/p/18133205