2019年CTF4月比赛记录(二):“掘安杯”、TJCTF部分Web题目writeup与重解

2024-03-10 04:50

本文主要是介绍2019年CTF4月比赛记录(二):“掘安杯”、TJCTF部分Web题目writeup与重解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面的:
这次比赛总体上还好吧,虽然并没有做出特别多的题目,只有8道,但是经过这个比赛,包括后面的复现,还是能学到点东西的,对自己而言也算是一种提升吧。起码相较于两个月前还是能感觉到自己的进步的。
具体的writeup官方也给出来了,我只在这里写出自己的做题记录,可能有的比较复杂,复现的过程也比较繁琐,还望见谅。
这一阵子事情挺多的,掘安和TJ的时间有点久了
比赛时间:2019年4月6日
复现时间:2019年4月10日至4月14日

一、Writeup:(基本上是密码、MISC、Web,具体的分类我记不太清了)
(一)、MISC:
首先一个文本文档:
在这里插入图片描述
一看就知道Quoted-printable编码,解码:
在这里插入图片描述
很简单,与佛论禅:
在这里插入图片描述
到了这一步后,一开始我是懵逼的,我一开始还以为汉字编码,整了半天,后来才想起来有个社会主义核心价值观编码,不得不说,这思想觉悟真不错:
在这里插入图片描述
(二)、MISC:
签到水题,直接关注公众号拿flag:
在这里插入图片描述
(三)、Web:
这是道web题,打开题目后出现一个链接,让我们下载:
在这里插入图片描述
唔,不在这里,那就view-source看一下:
在这里插入图片描述
提示来了,flag.php,那就直接放到地址栏里,然后出来了一个文件:
在这里插入图片描述
两个值在最后面已经给出来了,而且程序也给了,直接跑一下就可以了:
在这里插入图片描述(四)、Web:
这也是道web题,题目描述是网站被黑了,打开链接看一下:
在这里插入图片描述
说实话,当看到这个页面后,还是比较失(欣)望(喜)的,这是道原题,直接御剑后台扫一波:
在这里插入图片描述
找到第二个网址,shell.php:
在这里插入图片描述
需要提交才能获得flag,直接抓包爆破,最后的密码连改都没改,还是hack,提交直接得到flag。
(五)、Web:
这也是web题:
在这里插入图片描述
但是直接点击后,出现如下界面:
在这里插入图片描述
咦,这是什么情况,view-source走一下:
在这里插入图片描述
我们可以看到,链接是flag.php但是当我们点击后,重定向到了404.php,我一开始也是不知道该怎么整,后来curl看了一下:
在这里插入图片描述
发现Flag,解码走一下:

在这里插入图片描述
(六)、Crypto:
密码学签到水题,直接base16走一下:
在这里插入图片描述
(七)、Crypto:
题目给的很明确,base16、base32、base64全部都参与编码,既然这样的话,普通的解码是得不到flag的,因为是循环的,那就只能python脚本爆破,从网上找了一个,直接用:
在这里插入图片描述(八)、Crypto:
在这里插入图片描述
罗马帝国的奠基者,很明显,凯撒么。但是普通的凯撒加密不能解密,观察格式应该知道这是变异凯撒,通过去找相对应的ascii码,python脚本求解:
在这里插入图片描述
二、复现:(主要是web题目)
(一)、Web:
这道题打开后也是一段代码:
在这里插入图片描述
乍一看还是可以理解的,以GET的方式提交两个变量,一个是action,一个是arg。然后正则匹配,对于action匹配字母数字和下划线,然后就不知道了,后来看了看官方给的writeup,利用create_function()代码注入,绕过正则过滤。
(@_@)表示没太看懂,可能还是太菜了?。按照它说的,找到了P神当年的文章,看了一遍,大体上知道是个怎么个情况。对于正则匹配的那一部分代码,在数字字母下划线都被禁用的情况下调用函数,因为正则里面用了^$,就有可能在开头或结尾加入某个字符绕过正则且函数依旧能正常执行。利用字典fuzz,发现\可以绕过。最后构造出payload,扫描当前目录,找到以下内容:
在这里插入图片描述
直接构造payload打开文件,拿flag:

在这里插入图片描述
这道题如果直接用之前那道题目的payload显然是行不通的,说实话我也不知道为什么,这一部分知识还是欠缺蛮多的,做了一段时间的代码审计也只不过知道一点皮毛,现在也才意识到自己还有许多盲区待扫。
(二)、Web:
打开后又是代码审计:
在这里插入图片描述
前面还有一部分str1、str2、str3、str4的代码,但那部分还是比较好构造的,主要还是后面的str5、str6、str7、str8、str9。
在这里插入图片描述
首先,第一个对于str1、str2、str3、str4,之前遇到过这种题,直接利用弱类型比较,数组绕过。str[]=1&str[]2=2&str[]=3&str[]=4;那么下一步,对于str5、str6、str7,出现了强制类型转化,官方wp给出了通过传入文件使其md5相等,这一点还是当时没想到,有必要记录下来。最后对于a、b、m、n,我们可以看到a必须为大写字母,b为数字而且长度为6,m和n长度小于4。对于str8和str9,我们可以看到str8是对a作hash加密,str9是对b作hash加密,然后把m替换为n。当然我们也能看到,str8和str9还是利用的弱类型比较。我们知道md5的弱类型比较绕过有很多种方法,官方给出的是0e,我个人感觉这也是日常做题可以想到的,因为常用的字母串也就那些,然后对于str9,b通过hash加密后可以满足0e开头,但是为了满足长度为6,就需要利用后面的替换,把0e后不是数字的替换为数字。官方wp也给出了最后的脚本,直接运行得到flag。

三、TJCTF:
(一)、签到水题:
1.blurry(web):
直接view-source:
在这里插入图片描述
在这里插入图片描述
2.Touch Base(Crtpto):
直接解码:
在这里插入图片描述
3.Cable(Forensics):
直接wireshark:
在这里插入图片描述

TJCTF的web题目就不复现了,以我现在的能力还搞不懂,现down下来回头看看再说吧

小结

1.就一个感受,会编写一个python脚本好重要,该努力学学python了,不然以后题都没得做。
2.日常感谢wp提供者。
3.掘安杯好像又出了几道新的cyrpto、misc题目,没时间看了,当然这次比赛还是不错的。
4.前几天的西湖论剑也参加了,昨天参加了一个东南大学主办的“永信杯”,下一篇写写这两个比赛的writeup、复现和感受。

这篇关于2019年CTF4月比赛记录(二):“掘安杯”、TJCTF部分Web题目writeup与重解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793110

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除