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、复现和感受。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值