NewStar CTF web1
泄露的秘密
根据题目和网页的提示,认定这是一道藏有敏感文件的题,第一时间我想到的是爆破路径,但是很不巧,我没安dirseach,自己的路径扫描工具还出了问题..
我就打算尝试几个可能藏有敏感文件的路径,发现/robots.txt里有一部分flag
好,但是只出来了这一半,果不其然的卡关了,但是在刚才的尝试中发现了一个/index.php路径有点特殊,据我发现网页是存在这个路径的但是显示不出来这个文件,所以通过网上的搜索,终于发现一种能下出敏感文件的路径/www.zip
好好好还真藏在这里了,这下另一半flag也找到了,拼接一下提交这样就成功拿下第一道了
Begin of Upload
经典文件上传,那么先尝试一句话木马直接上传
上传后发现网页过滤格式,那么我采取改成合法后缀上传后抓包再改包的这种方法植入后门
那么接下来改好后缀上传,直接用burpsuite抓取这个数据包
此时上传就成功了,也从burpsuite内抓到了数据包
那么这时将这里的后缀改成php,再发回给服务器,这个木马就生效了
好,这样就可以用webshell操作了,这里我用中国蚁剑操作一下
ok确认植入成功了,我们的这个木马文件也能看到在里面了,这样就可以去翻看这个服务器的各种文件了,在这之间应该就能找到本题藏有flag的文件
找到了,打开这个文件看看就是答案了
Begin of HTTP
映入眼帘的就是传get参数,估计后面也会有post请求,那么我直接用hackbar来做了
果然下一步就是传post参数,但是需要找一找secret的值
从网页源码翻翻就找到了,base64解个码传上去
ok传好值了,接下来看看请求头部分有没有信息吧
发现cookie部分有题目要求的验证内容,将其改成ctfer
成功,又是一关,依旧是改请求头部分,这次因为是浏览器指定要求,那么就修改User Agent部分为题目要求
好了又是经典改请求头,这次是修改referer部分
终于到最后了,也是经典套路本地访问,经过多次尝试试出了是哪条语句生效
为了方便一次性尝试我用的burpsuite抓包一次性都写进去发包,但是坐大牢了,整了半天发现最后是X-real-IP这条语句才能生效,不过最后也是成功了
那么这次就用hackbar演示一下结果吧
PS: 最后一部分通过和我亲爱的蓝学长讨论,得知到更简单的伪造ip方法在此致谢此大佬
ErrorFlask
开局看到这个提示一时间想到传参,但不清楚Flask是什么东西,通过查阅得知Flask是一个网页的框架,也是可以接收正常请求的
我尝试着传了这两个指定的参数
发现出现这样的提示,得知flag就在源码中,但Flask框架的源码目前不清楚怎么查看,我又进行了几次尝试
此时发现如果传入的不是数字就会有这样的页面
当时对这个界面确实匪夷所思,一直想着是不是还是对参数的改变才能得出答案,但是仔细一想这题的主要内容是Flask,经过长时间的周转我打算仔细看看这个显示出来的界面
结果细看发现这不就是源码吗..通过翻找就找到了flag
(这题确实没想到这么简单,之前和贺同学交流得知如果是ssti漏洞就会难不少)
Begin of PHP
翻翻这道题,发现是有五层保护,需要一层一层绕过
那么先来到第一层,要求key1和key2不同但md5加密后相同,那就根据md5加密的机制传两个不一样的数组
如图,第一层就过了
第二层是传个post参数经过md5加密和sha1加密后强相等才能通过,那就再传个数组呗
好也过了
到第三层了,发现是一个字符比较,但strcmp()函数无法比较数组,所以我继续传个数组
果然过了,接下来看看第四层吧
第四层发现不能传数字并且值要大于2023,那可以利用php中数组类型一定比整数类型大的特点,我们随便传上一个数组
第四层就过了,看看第五层是什么成分
仔细看看,发现这个flag5需要自己传,而且根据前两句函数发现传的post数组中的值和键会被取出当成单独的值,并将这些值和其他post传的参赋给var,之后根据这个正则表达式过滤一切字母和数字
那么我们之前传的post参数key3数组里就不能有数字,且之后传的flag5里也不能有数字
这样我们可以给key3数组赋任意的符号来绕过这个正则并且第二层的通过也不会失效(因为依旧是数组),而flag5可以考虑通过构造flag5=’ ‘这样的payload来绕过正则,且这样的表示也为真,这样if语句执行,flag就展现在眼前了