红帽杯 2017 线上初赛 WriteUp

  • A+
所属分类:安全博客

签到 (Misc10)

题目:关注公众号"CTFer的魔法棒"回复"ctf"获取flag

关注微信公众号「CTFer的魔法棒」,关注后在公众号中发送 ctf 就会自动回复本题的 FLAG

红帽杯 2017 线上初赛 WriteUp

flag{BE78989E-1F00-8326-11AD-590B23F48AB3}

pwn1 (Pwn100)

题目:nc 106.75.93.221 10000

拿到题第一步,当然是先checksec

发现NX开了

红帽杯 2017 线上初赛 WriteUp

上IDA,看到代码主体部分

红帽杯 2017 线上初赛 WriteUp

__isoc99_scanf,继续看代码,发现_system

红帽杯 2017 线上初赛 WriteUp

没有/bin/sh,但可以用scanf往bss段写,然后找到%s

红帽杯 2017 线上初赛 WriteUp

那么整体思路是覆盖返回地址,执行scanf,往bss写/bin/sh,把bss的/bin/sh给system执行。

写个脚本

红帽杯 2017 线上初赛 WriteUp

本地测试没问题,远程跑,getshell

红帽杯 2017 线上初赛 WriteUp

在/home/pwn1/flag.txt下找到FLAG

flag{1b01d6c0d28e6806be92633b97aea1ee}

刮刮乐 (Web100)

题目:flag隐藏在某个地方
http://106.75.13.170:3080/

一打开这个网页,首先我关注了他的网页源代码,源代码并没有给出太多的提示。

在网上进行了相关的搜索,发现这是一个网上一个经典的 canvas 刮刮乐代码,因此问题应该不再这里。

然后我将重点放在了这张图中

红帽杯 2017 线上初赛 WriteUp

一开始以为是 png 隐写之类的,通过 binwalk 检测这应该只是一张纯粹的图片,而且图片是放图床,一般经过转码

然后我就关注在了图片本身,「信息泄露第一步」,应该就是暗示我们扫一下网站的目录。

很快我便发现了存在 /.git/ 目录,然后套上了 GitHack

很快下载到了一个 flag.php 文件,我们的 flag 就躺在里面

红帽杯 2017 线上初赛 WriteUp

flag{027ea8c2-7be2-4cec-aca3-b6ba400759e8}

brian(Y) (Crypto50)

题目:下载附件,解答密文就可获得flag
flag格式:flag{******}

在我还在做签到题的时候就已经有队伍解出来这道题了,所以估计不会太难。

红帽杯 2017 线上初赛 WriteUp

观察可知,该密文主要由 +-<>[]. 组成。经过判断,这种语言称为 Brainfuck ,一般由 +-<>[]., 八种字符组成。

使用在线转换网站即可将密文转换回文本:https://www.splitbrain.org/services/ook

flag{e676600a-06b4-4a20-b159-d5654415d0c3}

PHPMyWIND (Web200)

题目:这个网站看起来很不错,但可能有bug,请帮忙找出bug。
请访问:http://106.75.13.174:3089/
备用:http://106.75.96.7:3089/

红帽杯 2017 线上初赛 WriteUp

首先看了看网站的 Logo ,所使用的版本应该是 2014 年之前的,也就是说我们有很多选择可以进行操作。

我所使用的注入点是 shoppingcart.php 这个文件,注入的结果可以直接以 title 的形式返回出来,比较方便。

首先直接访问

红帽杯 2017 线上初赛 WriteUp

然后在查看我们的购物车:http://106.75.96.7:3089/shoppingcart.php

红帽杯 2017 线上初赛 WriteUp

我们就拿到了管理员的用户名和密码,分别是 admin 和 4027875a97a7787b9032ea46dae45d05

通过 CMD5 不难解出 4027875a97a7787b9032ea46dae45d05 的明文就是 666888

使用 admin 和 666888 即可登录到后台,后台的地址也是默认的地址: http://106.75.96.7:3089/admin/

本来是想通过后台 getshell 进行操作然后拿 Flag 的,但是管理员限制了所有上传目录权限,也禁止了修改网站的配置文件。

想了想上午题目刚出来的时候目标站被各种 phpinfo 所占据,影响到很多队伍参赛,我就断定应该是管理员故意禁止的,可能出题人并不希望我们拿 shell ,而是应该将 Flag 写在了网站的某个地方,于是把所有能点的地方点了一遍。

最后找到了这个叫 默认模板文件管理 的地方,发现了我们的 Flag

红帽杯 2017 线上初赛 WriteUp

于是直接访问这个地址,顺利拿到 Flag

红帽杯 2017 线上初赛 WriteUp

flag{14070c9e-bab5-47ec-88f7-9e574bd328f6}

后台 (Web200)

题目:经典后台管理系统,系统建成于2017年,管理员以建成日期作为口令。
http://106.75.13.174:3081/

我真的觉得这题给 200 分是放水的。

题目已经十分明显得暗示了答案

经典后台管理系统,系统建成于2017年,管理员以建成日期作为口令。

红帽杯 2017 线上初赛 WriteUp

打开网页, admin 已经作为 value 的参数写在了用户名这一栏当中,可以十分肯定用户名就是 admin

而密码根据 placeholder="........" 的推测,是有 8 位数的,结合题目的暗示,即为今天的日期: 20170506

输入验证码后登录,即可以轻松拿到 Flag

flag{2ac81311-0d7c-4f52-92ae-233ba3515a6d}

pwn5 (Pwn100)

题目:nc 106.75.93.221 10003

红帽杯 2017 线上初赛 WriteUp

红帽杯 2017 线上初赛 WriteUp

上IDA代码main部分读入一个文件,估计是flag,然后保存在bss段的flag里

红帽杯 2017 线上初赛 WriteUp

这里gets用户输入,用strcmp与flag比较,爆破的话可能跑很久。看到__stack_chk_fail,结合前面checksec,有栈检测。

上网查了一下,发现可以在栈检测报错信息里输出内存数据

先查一下bss段里flag的地址,0x804A080

红帽杯 2017 线上初赛 WriteUp

不知道偏移地址,然后写个脚本,强行跑一下,得到偏移,发现本地跑和服务器跑是不同的。得到偏移,写脚本跑

红帽杯 2017 线上初赛 WriteUp

红帽杯 2017 线上初赛 WriteUp

flag{d91e8087c1655df0dfa99c523ccd498a}

pwn4 (Pwn400)

题目:nc 106.75.66.195 11006

红帽杯 2017 线上初赛 WriteUp

红帽杯 2017 线上初赛 WriteUp

第一次看到这么短的代码,关键点在syscall,将用户输入放到栈中

上网查了一番,在freebuf找到一篇文章

SROP:http://www.freebuf.com/articles/network/87447.html

同时还发现360春秋杯原题,在网上找到脚本

Link1:http://anciety.cn/2017/04/21/2017429ctf-smallest-writeup/

Link2:https://winter3un.github.io/2017/04/22/429-2017/

写脚本,跑起来

红帽杯 2017 线上初赛 WriteUp

红帽杯 2017 线上初赛 WriteUp

get flag

红帽杯 2017 线上初赛 WriteUp

flag{2b1ed20877ebc0902e3fe1877adcc973}

thinkseeker (Web300)

题目:背后的代码
http://106.75.117.4:3083/

这题开始便有意思了,网页打开就是一个非常简单的提交登录框,估计就是 SQL 注入类型的。

红帽杯 2017 线上初赛 WriteUp

随便输入了一个 userid 和密码,他是以 GET 的方式提交到 / 这个文件的,构成的 URL 就是 [http://106.75.117.4:3083/?userid=1&password=1]

但是他始终提示我们 Bad token! ,一开始也卡了挺久,后来想应该是和其他参数一样,于是构造了个 [http://106.75.117.4:3083/?userid=1&password=1&token=blablabla] 的链接

经过一轮测试, token 应该为 admin 的 MD5 值,然后我们便通过了 token 的检测。

userid 通常按照数据库的自增的话,应该第一个就是 1 ,然后我们知道了这个用户的 userid 为 1

然后进行 SQL 的测试,先看看他有什么被过滤的字符

' " join union, 这些被检测出来之后会提示 inj code! ,过滤得不多,还有挺多的发挥空间。

参考了网上的姿势,给 userid 使用了 -1=1=0 ,多重判断之后也成功得通过了 userid 的检验,因此尝试从这里进行盲注。

于是写了个 Python 脚本进行处理,ascii猜解,从 Flag 的第一位开始判断,逐位判断。

红帽杯 2017 线上初赛 WriteUp

红帽杯 2017 线上初赛 WriteUp

flag{71fb58931b330a83eba9b25e40ac437a}

Source: impakho.com | Author:impakho

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: