CCTF 2016 WriteUp(部分)

上周参加了CCTF,也算是练了一段时间以来第一次正式打比赛并打完了全程的,最后结果拿了个11名,还算满意,毕竟是第一次。但这次比赛强队确实不多,而且我们队和别人的差距也是很大了,毕竟也还不到半年时间,还有太多东西要学,慢慢来吧,正确明年之前能够凭实力打进一次线下赛。

先贴一下大神的wp:http://bobao.360.cn/ctf/detail/159.html

在贴贴我们自己的wp把。

WEB 350

给了一个静态的页面,扫了扫也没发现什么东西,

然后后来给了一个hint,说是找博客,好吧,疯狂寻找群里管理员们的博客,最后在github上找到了Pocky Nya,然后在repositories找到了目标网址

然后先把源码也下载下来,简单读了之后,大部分地方都有身份验证,而且获取参数地方也就两个,都没法XSS,后来意外中发现了源代码的background.py的’/kamisama/posts/add’这里是没有身份验证的,如下:

class AddPostHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        self.background_render(‘add_post.html‘, post=None)

    def post(self):
        title = self.get_argument(‘title‘, None)
        content = self.get_argument(‘content‘, None)
        tags = self.get_argument(‘tags‘, ‘‘).strip().split(‘,‘)
        if not title or not content:
            return self.redirect(‘/kamisama/posts/add‘)

        post = self.orm.query(Post.title).filter(Post.title == title).all()
        if post:
            return self.write(‘<script>alert("Title has already existed");window.history.go(-1);</script>‘)
        self.orm.add(Post(title=title, content=content, created_time=date.today()))
        self.orm.commit()
        return self.redirect(‘/kamisama/posts‘)

所以就可以伪造添加文章的数据包,然后设置存储型XSS获取管理员的cookie。如下所示:

因为考虑到万一设在content里面管理员看不到就不好了,所以我把XSS设置在了title上面,虽然有点毒瘤,不过这样子就能百分百的获取到管理员的Cookie了,很快就有人登录了,结果第一次获取到的不是管理员的,是其他人获取之后登录的,虽然确实拿到cookie了,但是里面并没有flag,结果花费了N久又把各种代码重读了一遍,发现在background.py里面的SignInHandler中确实是把flag写进了cookie的,所以我又提交了一次上面的payload,这一次成功获取到了正确的cookie,如下:

username=2|1:0|10:1461405568|8:username|12:cG9ja3lueWE=|2821528813698c6ee9c1650c8420cfb4da968ec97ae080e65c07542f0d249df0;flag=434354467b434f44455f41554449545f425553544552537d

然后按照ascii码转一下就出flagCCTF{CODE_AUDIT_BUSTERS}

WEB 300

用之前获取到的cookie登录之后,访问pocky.loli.club:41293/diaries目录,能够看到新的提示说是telegram上布置了一个机器人,同时给出了机器人的lua代码,然后我们就去telegram社工一下pockynya就搜到了这个账户

然后根据它博客里面给出的给的lua代码如下:

do

local function run(msg, matches)
  if matches[1] ~= ‘!minecraft‘ then
    operation = matches[1]
  else
    return "!minecraft start|stop|restart"
  end
  if string.find(operation, ‘&‘) or string.find(operation, ‘|‘) or string.find(operation, ‘`‘) then
    return "Invalid operation " .. operation
  end
  local t = io.popen(‘cd /home/telegram && ./mc ‘ .. operation)
  local a = t:read("*all")
  return a
end

return {
  description = "loli.club minecraft bot!",
  usage = "!minecraft start|stop|restart",
  patterns = {
    "^!minecraft$",
    "^!minecraft (.*)$"
  },
  run = run
}

end

所以我们可以用;断开前面的命令,然后就能执行我们的命令了,如下:

!minecraft ;xxx

后面的xxx处就可以插入我们的命令行代码,最后的flag就在../wwwroot/flag里面

如图:

所以flag就是CCTF{TELEGRAM_BOT_AND_Lf}

MISC 1

给了一个图片,在图片最后的32位有很连续的一堆字母,如下

base64解码一下得到flag,ctf{we1c0me t0 anmactf!}

MISC 2

这里,在第5560的内容里面发现这样的东西

type s4cr4t.txt

所以接下来这就是我们需要的文件内容,是个Base64编码的东西,解码之后是这个,CCTF{do_you_like_sniffer},根据它的格式,他还需要的是MS打头的漏洞编码,根据随便谷歌MS SMB 漏洞 溢出了一下,试了几个之后就试出来了最后确切的漏洞编号就是MS08067,所以最后答案就是MS08067CCTF{do_you_like_sniffer}

re1:

IDA反编译后查看,发现运行要求包含三个参数,且在其中随机选一个进行测试,这里注意md5_custom函数没有用处….

经过check函数测试

取内存中找下:发现字串f2332291a6e1e6154f3cf4ad8b7504d8

尝试提交,成功

flag:CCTF{f2332291a6e1e6154f3cf4ad8b7504d8}

re2:

一个.net程序,使用Reflector反编译,得到代码

发现这就是个和本地端口通信的程序,于是先去关闭了防火墙,在通过RAWPCAP本地回环抓包即可

得到flag::CCTF{7eb67b0bb4427e0b43b40b6042670b55}

re3:

一个简单的反汇编

发现就是两个字符串的比较

尝试将上面那个字符串提交,发现正确.

flag:CCTF{789101112131415123456}

true-or-false

两个linux程序,通过IDA反汇编,发现两个程序开始时都会调用system两次,通过ascll码知道了false会将自己覆盖到true上,true会将自己删除.

然后在false里发现了print_f函数,反汇编+凯撒加密就得到了结果的flag

PPGS{yvahk-enva-ova}

\\\\\\\\\\

CCTF{linux-rain-bin}

difffffffffffuse

通过IDA观察反编译出的C语言.

总共有3000个函数,3个函数为一周期。但是其中有一些周期中的,第二个函数是直接提取数据,第三个函数移位存在微小差异。通过把汇编代码提取出来生成txt文件,然后用python读取文件模拟生成c程序,即把这3*1000个函数中的第二个函数都扒取出来,生成second.c文件

程序最后会将这3000个函数加密后的40字节与现有的40字节相比较,于是我们在IDA中把这40个字节抓取出来

    0x83    0xec    0x5f    0xa2    0x93    0xce    0xa3    0xfb
    0x5a    0x17    0x06    0xff    0x13    0x2d    0xd7    0xc4
    0xbe    0xce    0x8d    0x6a    0xb8    0x15    0x26    0xfc
    0x84    0x01    0x94    0x44    0xf8    0xd7    0x23    0x1c
    0x4b    0xc2    0x31    0x04    0xa6    0x33    0x08    0x57

每一个字符的加密是独立运行的,也就意味着我们可以针对每一个字符进行单独的爆破,看看加密后的数据是否相同,通过简单爆破,最终得到flag:

CCTF{1f_Y0u_W4nNa_R3vEn93_____purpleroc}

神秘文件1

拿到forensic.7z后解压得到level1与mem.vmem两个文件,观察文件开头,经过百度后得出level1为硬盘文件,mem为内存文件

恰巧本人有一个空硬盘,于是将硬盘格式化,用bootice将level1写入了硬盘,如图所示

发现硬盘被Bitlocker加密,由于存在忘记密码的可能,Bitlocker提供了文件恢复密码机制,密码为48位纯数字

考虑了恢复密码在内存中的可能性后,用winhex打开mem,在其中搜索Bitlocker没有找到,想起了恢复密码id提示为F2298561,搜索后找到有关内容

发现内存中的数据很多情况用00隔开,于是搜索F2298561的16进制数,每两个数用00隔开,最后找到了48位数字密码

为046409-191059-605495-680889-626109-111617-371668-451517

解锁成功!拿到flag CCTF{U_m4st_G00d_4t_F0nr4n51c}

BEST_EZ_MISC

拿到名为reverze.zip的压缩包,用winhex看了一下,很容易想到是zip伪加密

将pk 01 02 后的第5个字节改为00,发现可以解压,得到reverse

打开看了一下,发现是摩丝电码,解密后得到0,9字符串,程序跑了一下算上空格一共2048个字符,由于题目提示结果是个图片,于是尝试不同的像素来观察,最终得到如图所示结果

虽然不是很清楚,但是颠倒一下很容易看出flag: ctf{pixelnice}

misc100T2

很简单的流量分析,打开以后尝试搜索ctf直接得到结果

flag为ctf{anma_qwe3_as34_gty6}

时间: 2024-09-20 20:52:49

CCTF 2016 WriteUp(部分)的相关文章

聊一聊前端模板与渲染那些事儿

欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码): https://segmentfault.com/blog/frontenddriver 作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板.我们今天就来聊聊,拼装与渲染模板的那些事儿. 如果喜欢本文请点击右侧的推荐哦,你的推荐会变为我继续更文的动力 1 页面级的渲染 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串

使用 Raspberry Pi 上的传感器在 Node.js 中创建一个 IoT Bluemix 应用程序

先决条件 一个IBM Bluemix 帐号,一个 Raspberry Pi 2 或 3,一个 PIR 运动传感器 适用于本文的 Github 存储库 如果您是一位精明的 Bluemix 开发人员,您可能只想看看如何在 node.js 中与 IoT 建立连接,或者只想了解如何从此 github 存储库中拉取我的代码. git clone https://github.com/nicolefinnie/iot-nodejs-tutorial 以下是实现与 IBM IoT 平台连接在一起的 4 个 R

2016第七季极客大挑战Writeup

第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{We1c0m3_To_G33k_2O!6} 并且可以知道后边的题的Flag格式为 SYC{} 2.xiao彩蛋 题目提示关注微博,从Syclover Team 博客(http://blog.sycsec.com)可获取到三叶草小组微博,私信发送flag后即可得到. 3.闪的好快 一开始拖进PS分帧数

[ctf分享]最新2016华山杯CTF writeup

[技术分享]最新2016华山杯CTF writeup 2016-09-11 13:06:28 来源:安全客-FlappyPig 作者:安全客 阅读:12099次 点赞(3) 收藏(82) 作者:FlappyPig 稿费:700RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 2016 华山杯 网络安全技能大赛 解题报告 队伍: FlappyPig  Web渗透 0x01 打不过~ 添加type=”submin”,点击提交抓包 有一串字符串,base64->md5,19

2016风云杯大学生信安大赛 WriteUp

2016风云杯大学生信安大赛 web 01 web 02 web 03 web 04 web 05 web 06 web 08 web 09 CRYPTO 01 misc 01 misc 02 misc 03 misc 06 apk 01 apk 03 apk 04 re 01 re 03 re 04 2016风云杯大学生信安大赛 好吧第二次正式打CTF,虽然这次的题比较简单,而且大部分强队都去打whctf去了,最后10分钟直接从第四掉到第七,也没办法,实力不够,继续练吧,贴个图纪念一下.整体看

2016 alictf Timer writeup

Timer-smali逆向 参考文档:http://blog.csdn.net/qq_29343201/article/details/51649962 题目链接: https://pan.baidu.com/s/1jINx7Fo   (在里面找相应的名字就行) 题目描述:每秒触发一次计算,共有200000秒,答案参与计算,不可能等待下去. 使用工具:Android Killer,jadx-gui 解题方法有多种,我参照网上的一种方法.通过对native层,代码的还原,计算出200000秒后的关

2016 SWPU CTF的WriteUp

2.1.题目信息 地址: QQ群:184517991 分值: 50分Flag: flag{welcome_swpu_ctf} 2.2.解题过程 进入他们官方的QQ群,找了一圈没找到Flag,然后问了下管理员,管理员表示Flag在历史公告,But我的Mac QQ并不能看历史公告,于是... 嗯,这是一道送分题 3.Misc150(Misc2) 2.1.题目信息 地址: http://misc.08067.me/misc2/misc.pcapng分值: 150分Flag: flag{Rgb_dhsk

ISCC 2016 逆向部分 writeup

ISCC2016 逆向部分 by GoldsNow 做了这套题目感觉涨了不少的姿势..渣渣就只能够用渣渣的方法 题目下载 Help me 描述:I've got a difficult task and I can't solve it. I need your help! 思路:爆破 ELF64位的程序,直接在IDA中打开,可以看出来思路应该是比较清晰 先点进去main函数来进行分析. for ( i = 0; i <= 15; ++i ) { if ( !(v11 & 1) ) ++v5

ISCC 2017 Web writeup

ISCC 2017 Web writeupWeb签到题WelcomeToMySQL自相矛盾我们一起来日站I have a jpg,i upload a txt.where is your flagSimple sqli ISCC 2017 Web writeup Web签到题 这种签到题不能往难了想,首先理所当然的这样传参 hiddenflag=f1ag&flag=f1ag 这回显不一样了,试了很多方法,最后就是再加一个参数FLAG=f1ag,然后就成了,完全没有逻辑... WelcomeToM