第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)

2015-05-08 20,953

0×00 前言

作为“4.29首都网络安全日”的重要活动之一,第二届北京网络安全技术大赛于4月29日成功举办。大赛吸引了北京乃至全国的网络安全从业者以及各大高校信息安全相关专业学生的热切关注。

夺旗比赛展示

14309032396530

 

比赛现场

1430903214671

 

 

0×01 夺旗赛介绍

本次夺旗赛环节时间为3个小时,共有五大分类,分别为Web安全、逆向、溢出、密码学和综合。综合比赛时间及选手的实力综合考虑。

·Web安全:题目会涉及到常规的漏洞及部分渗透测试相关性题目。
·逆向:涉及到软件逆向、破解等技术。
·溢出:通过寻找软件的漏洞后编写exploit并利用。
·密码学:考察各种加解密技术,算法等,需要涉及部分编程辅助。
·综合:信息安全综合题,包括信息隐写、流量分析等。

 

0×02 Web安全解题思路

1.The First(20分)

访问目标ip,通过nmap进行端口扫描,发现开放8888端口。

14309033506161

 

访问http://ip:port(port为8888端口),在响应包中获得flag。

14309033788313

 

·关键字:信息收集、端口扫描、http报文

·难度等级:●○○○○

·总结:信息收集是渗透测试的重要环节,选手需要了解端口扫描原理及常见工具的使用,且需要熟悉HTTP协议。

 

2.贪食蛇(210分)

打开靶机,是一个经典的贪食蛇游戏。

14309034122013

 

查看源文件发现加载了snake.js文件,发现了一段代码加密且不规则。当me.snakeLength > 250 的时候执行以下代码。

14309034292916

 

直接利用firebug进行调试, 执行加密结果,返回为一个假的flag。

执行加密代码后 查看firebug DOM树, 发现window[‘flag’]选项,发现flag。

14309034533548

 

·关键字:Web安全、JavaScript、JS加密

·难度等级:●●○○○

·总结:JavaScript广泛运用于客户端的脚本语言,选手需要熟悉JavaScript代码及调试方法。

 

3.新闻网站(380分)

通过简单的测试发现前台不存在漏洞。

14309034774741

 

访问/admin,发现后台管理员登陆页面,但是不存在注入或者弱口令。且有验证码,也无法暴力破解。

14309034951015

 

通过目录暴力破解(目录穷举),发现存在left.jsp文件。访问文件,存在js校验跳转,删除这段校验js或在浏览器端禁用js。

1430903525799

 

发现left.jsp功能栏有flag,链接为admin/flag,点击访问,直接跳转到首页,猜测由后端校验并跳转。

14309035478333

 

点击新闻管理,通过删除js校验,发现存在新闻管理页面。

14309035659663

 

选择一条新闻,鼠标滑倒编辑,发现有编辑链接/editqas183462News.do?ldid=。复制链接,在新窗口打开,通过 and 1=1 ,and 1=2,发现ldid参数存在SQL注入。通过注入利用,获取管理员帐号密码。

14309035822992

 

回到管理员登录页面,登录后,访问/admin/flag获得flag

1430903602636

 

·关键字:渗透测试技巧、SQL注入、前端校验

·难度等级:●●●○○

·总结:很多开发人员为了交互友好常使用前端校验,但由于使用不当,可能导致安全风险;同时SQL注入也是极为常见的Web安全问题。选手需要掌握以上的知识考点技能,同时有一定的渗透测试经验。

 

4.美男子(580分)

访问网站,查看网页源代码。发现index.phps文件。

14309036279082

 

审计index.phps文件,外部可传入key1和key2参数,其中key1参数带入SQL查询。当查询结果不为空,且$_POST[‘key2’]的值等于$key[‘key2’]时,打印flag。

14309036458099

 

但所有的POST参数都经过一个名为AttackFilter()的函数,该函数过滤了union、select、from等一系列关键字,导致无法直接使用union查询。

14309036613497

 

查询结果$key[‘key2’]为未知值,使用MySQL中数据统计的应用WITH ROLLUP进行绕过。如执行GROUP BY key2 WITH ROLLUP。对于GROUP BY的列,WITH ROLLUP将不做任何处理,且返回NULL。

14309036788681

 

故执行key1=‘ or ‘‘=‘‘ GROUP BY key2 WITH ROLLUP LIMIT 1 OFFSET 1#&key2=即可获得flag。

14309036966773

 

·关键字:PHP代码审计、MySQL WITH ROLLUP

·难度等级:●●●●○

·总结:安全从业人员常通过白盒方式进行安全评估,本题通过PHP审计发现安全漏洞,结合数据库的特殊用法,较为考验选手的功底。

【来源:第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)*作者:安恒信息(企业账号)】

本文作者:意小周

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/6444.html

Tags:
评论  (0)
快来写下你的想法吧!

意小周

文章数:11 积分: 3

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号