小白欢乐多——记ssctf的几道题目

二哥说过来自乌云,回归乌云。Web400来源于此,应当回归于此,有不足的地方欢迎指出。

0x00 Web200


先不急着提web400,让我们先来看看web200的xss。

Url:xss=xxx" style="box-sizing: border-box; text-decoration: none; color: rgb(51, 122, 183); background: transparent;">http://960a23aa.seclover.com/index.php?xss=xxx

显然参数xss是要上payload。先大概看一眼都过滤了什么。

可以发现尖括号和冒号都过滤成下划线了,并且尝试了好几种姿势也无法绕过。

再看看其他的过滤规则。

基本都过滤了,就剩下一个孤零零的1了。

再祭出《web前端安全》提到的奇妙payload,注意到onerror中的on被吃掉了。

连打多个on也是没有用的,联想到以前玩sql注入的经验,oonn这样的形式是能打出on来的。看到这结果的存在,顿时感觉来了希望。

[7] [8]  

这种形式似乎已经很接近了,但是万恶的下划线仍旧无法解决,一度陷入死局了。

后来,学长说仔细看看源码,那谁写过网页他或许能看出什么。

注意到开头一句,似乎平时我不是那么写的,又注意到页面有css,就跑偏到了http://drops.wooyun.org/web/11539这篇文章,但是似乎并没有什么用。百度了一下第一句话。

!!?识别和加载,赶紧试了一下。

AngularJS 的表达式是写在双大括号内:{{ expression }}

识别了!

确定了版本号以后,队友就找到一发payload。

经过加工:{{'a'.coonnstructor.prototype.charAt=[].join;$evevalal('x=1} } };aleonrt(1)//');}}

上一页        [7] [8]  

弹弹弹了:)

0x01 Misc:饥荒_MC


在web400前,那就再提提misc的饥荒_MC,这是我见过的最有趣的ctf题目没有之一,之前听说了好久的websocket也第一次见到实例。

打开一看,似乎是个小游戏。

一般出现在ctf里的游戏不能轻视。

第一关一切平和,直通第二关。

第二关,似乎要找到一个key才能通关,顿感道路坎坷。Key是什么也没说,只说空格是个功能按键,那就先跑跑全图呗。跑了一会感觉太烦了,找队友写了个按键精灵来模拟。

但是跑完这张图也没能进去,就想会不会key在第一关,要知道这种游戏向来不按常理出牌。

就开始跑第一关,突然发生了一件奇妙的事情,一卡我突然传送到了一个奇怪的地方。

似乎由于不明原因,我突然跳关到了第三关。(后来想想可能是时间竞争?)

第三关是个砍树关,由于已经靠按键精灵连过两关,思路已经被定势了,已经听不进学长说什么js本地调试了,义无反顾的跳进坑里。要砍9999个木头来做木镐(一切始于木头),发现要按住空格一秒才能砍到一个木头,感觉似乎哪里不对,然而还是找个东西按着空格。。。直到5分钟后,发现被管理员踢掉了,才最终确定这是个坑,不可能通过小伎俩来过了。只得打开js代码,幸亏寒假看了一下《js-dom编程艺术》。

上一页        [7] [8]  

参数有个isReady,要加载完全部的图片才能运作,打开firebug,把图片另存为,放到相应位置,再写个html调用game.js(直接档网页上的就行)

突然一下就开启上帝视角了,毫不犹豫的跳关到level 4,却发现服务器提示你的宝石剑在哪?然后就被踢了。观察了一下代码,似乎应该有一只boss。

大概长成这样。

观察代码

实在不行,我就召唤一只boss出来,然后burp抓包,把玩家改为boss,但是似乎没有什么用,应该是在服务器端做的验证。

注意到hero的几种图片。

上一页        [7] [8]  

似乎这两种状态我都没有见到过,感觉哪里不对,再研读代码。

木头关下面有钻石关,并且注意到最后一关,似乎有两个点会自杀,幸亏没有过去。(第二关前面的门是假门,根本不存在key)

找到了木头采集函数修改一下。

直接9999,木镐get。

进入钻石关

这个似乎和木头关的函数差不多。(图片已经修改过)

当然直接9999被踢掉线了,尝试了一下似乎50是极限了。那就要点200下,而且感觉上传时间还有间隔限制,于是又打开了恋恋不舍的按键精灵。虽然慢,还是能在1,2分钟里完成任务。

终于拿到钻石剑了,如今我已天下无敌,走,捅boss去。

系统提示。

要捅15下boss或者杀5个人,做为一个wow的pve休闲玩家我当然选择捅15下boss(注意短距离武器那句话,结合自杀点是把弓箭)。

然而发现boss近距离一刀我就躺了,远程扣血导致pvp的难度也挺高(除非送人头)。循环往复几次,终于感觉按键精灵的速度不能满足我了(主要是发现学长在我旁边一下就拿到钻石剑了)。就把条件注释掉,发现上传速度不再卡顿,但是按200下还是太烦,最终又打开了按键精灵。(这里其实可以写个循环,论思维定势的可怕)。

上一页        [7] [8]  

既然近距离一刀秒,我就修改了攻击范围,又为了方便瞄准,又把boss图像修改了。

大概是这样,可惜pve休闲玩家的水准已经不足以让我靠走位捅到它15下了。

最终在学长提示数据交互的时候终于恍然大悟。

把攻击地址直接改为boss地址,然后找个阴暗的小角落就ok了。

0x02 Web400


终于到了web400,页面打开看一眼(url:http://b525ac59.seclover.com/)

一个github的图标和不要去爆破的提示,点开一看是github第三方授权的页面。感觉应该不会是github认证的漏洞。

绑定后样子是这样,一张github头像的图片,github的uid,一开始不知道为什么名字那边是none,结合find flag man,猜测最后的flag应该会输出在name的位置,网络也只请求了一张图片。

上一页        [7] [8]  

又一头雾水不知道该怎么办了。

知道burp抓包的时候,把cookie都去掉后发现了这个。

Flask似乎有点眼熟,感觉在哪里看到过,于是翻找了一下。

就在几天前的乌云知识库发表的文章,文章提到了控制模板内容来进行任意代码执行。再看页面的情况,感觉确实挺像那么回事的,模板里的内容都是我github上的,那么接下来就是找到可控点,来调用python了。接下来就一直跑偏到那张图片,我一直以为图片是可控内容,但是捣鼓了半天也没什么用。后来点开github的设置突然恍然大悟,明白了为什么name是none。

因为我根本没设置名字Orz。赶紧把名字设成{{7*7}}。

发现被解析了(和那道xss神似的方法)。

原文作者的payload不能直接使用,对python的内置函数也不熟悉,只得翻阅官方手册。

找到了打开文件的方法,感觉这个靠谱,试了一下,似乎没有什么用,于是去github上面搜索了一下内置的使用方法。

上一页        [7] [8]  

问题太多一下子翻不过来,注意到有10个用户用了这个奇葩名字,就打开看了一下。

!!看我都找到了什么,复制一句看的顺眼的,就爆flag了。

这个应该算是官方福利吧,毕竟不是什么人都会写payload的。

以上,完。没有什么太多的技术干货,基本都是自己逗逼的纪实,不管审核过没过,记录一下还是值得的。

上一页        [7] [8] 

小白欢乐多——记ssctf的几道题目的更多相关文章

  1. 记微信开发(有道翻译api)

    记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...

  2. hdu 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】(转)

    HDU 动态规划(46道题目)倾情奉献~ [只提供思路与状态转移方程] Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955      背包 ...

  3. C语言超级经典400道题目

    C语言超级经典400道题目 1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____构A.顺序结构,选择结构,循环结 B.递 ...

  4. 在 n 道题目中挑选一些使得所有人对题目的掌握情况不超过一半。

    Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quar ...

  5. SQL的几道题目

    1.构造数据插入方案表t_project_finish表 a)将addtime更新为当前时间的前一天 首先想到的是addtime=addtime-1,然后就开始验证这个想法. 插入一行数据,包括主键和 ...

  6. codeforces 几道题目

    BZOJ挂了....明天就要出发去GDKOI了....不能弃疗. 于是在cf水了几道题, 写写详(jian)细(dan)题解, 攒攒RP, 希望GDKOI能好好发挥.......  620E. New ...

  7. GDOI2015的某道题目

    分析: 考试的时候由于一些神奇的原因(我就不说是什么了)...没有想$C$题,直接交了个暴力上去... 然后发现暴力的数组开的太大,由于矩阵乘法的需要做$m$次初始化,所以只拿到了10分... 我们一 ...

  8. 关于fork有意思的两道题目

    http://www.spongeliu.com/123.html 第一题,计算下面代码理论上总共打印了多少行:(网易2011笔试题) #include #include #include int m ...

  9. GDSOI2015的某道题目

    分析: 看到这个$3^i$就觉得很奇怪的样子...为什么一定要是$3^i$...而且不能重复使用... 不能重复使用就代表不会产生进位,那么一定是若干个$3^i$相加减的式子... 仔细观察,我们发现 ...

随机推荐

  1. 第218天:Angular---模块和控制器

    1.使用NG实现双边数据绑定 所有需要ng管理的代码必须被包裹在一个有ng-app指令的元素中ng-app是ng的入口,表示当前元素的所有指令都会被angular管理(对每一个指令进行分析和操作) & ...

  2. UVA10054_The Necklace

    很简单,求欧拉回路.并且输出. 只重点说一下要用栈来控制输出. 为啥,如图: 如果不用栈,那么1->2->3->1就回来了,接着又输出4->5,发现这根本连接不上去,所以如果用 ...

  3. hdu6447 YJJ's Salesman

    这个题意和数据范围一看就是离散化之后树状数组优化DP.给的"从左下方走上去才能拿到收益"的性质其实可以当成"必须从横纵坐标严格比某个点小的地方转移过来".1A了 ...

  4. nginx实现ldap认证

    1.安装依赖. yum -y install openldap-devel yum install pcre pcre-devel -y yum -y install openssl openssl- ...

  5. 深入理解HashMap(原理,查找,扩容)

    面试的时候闻到了Hashmap的扩容机制,之前只看到了Hasmap的实现机制,补一下基础知识,讲的非常好 原文链接: http://www.iteye.com/topic/539465 Hashmap ...

  6. VS开发环境美化

    1.字体,推荐Deja Vu Sans Mono 2.背景色为护眼绿色, 工具-->选项-->环境,字体和颜色,字体改为Deja Vu Sans Mono,项背景 改为

  7. Swift中使用MPMoviePlayerController实现自定义视频播放器界面

    默认情况下播放器自带各种控制按钮,比如前进后退播放暂停等: var url = NSBundle.mainBundle().URLForResource("1", withExte ...

  8. 每个 JavaScript 工程师都应懂的33个概念

    简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的.它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南. 本篇文章是参照 @leonardomso 创立,英文版项 ...

  9. Linux使用技巧(一):vim中选中多行、复制和粘贴

    一.选中多行: 使用命令vim打开文件,移动光标至所选行的开头,按v进入视图,键盘上按向下键,选中所需行即可. 二.复制与粘贴 三种方法: 1)在上文第一部分的基础上,按y,然后移动光标至所需粘贴处, ...

  10. Kerberos无约束委派的攻击和防御

    0x00 前言简介 当Active Directory首次与Windows 2000 Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身 ...