第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)
0x00 前言
作为“4.29首都网络安全日”的重要活动之一,第二届北京网络安全技术大赛于4月29日成功举办。大赛吸引了北京乃至全国的网络安全从业者以及各大高校信息安全相关专业学生的热切关注。
0x01 夺旗赛介绍
本次夺旗赛环节时间为3个小时,共有五大分类,分别为Web安全、逆向、溢出、密码学和综合。综合比赛时间及选手的实力综合考虑。
0x02 Web安全解题思路
1.The First(20分)
访问目标ip,通过nmap进行端口扫描,发现开放8888端口。
访问http://ip:port(port为8888端口),在响应包中获得flag。
2.贪食蛇(210分)
打开靶机,是一个经典的贪食蛇游戏。
查看源文件发现加载了snake.js文件,发现了一段代码加密且不规则。当me.snakeLength > 250 的时候执行以下代码。
直接利用firebug进行调试, 执行加密结果,返回为一个假的flag。
执行加密代码后 查看firebug DOM树, 发现window[‘flag’]选项,发现flag。
3.新闻网站(380分)
通过简单的测试发现前台不存在漏洞。
访问/admin,发现后台管理员登陆页面,但是不存在注入或者弱口令。且有验证码,也无法暴力破解。
通过目录暴力破解(目录穷举),发现存在left.jsp文件。访问文件,存在js校验跳转,删除这段校验js或在浏览器端禁用js。
发现left.jsp功能栏有flag,链接为admin/flag,点击访问,直接跳转到首页,猜测由后端校验并跳转。
点击新闻管理,通过删除js校验,发现存在新闻管理页面。
选择一条新闻,鼠标滑倒编辑,发现有编辑链接/editqas183462News.do?ldid=。复制链接,在新窗口打开,通过 and 1=1 ,and 1=2,发现ldid参数存在SQL注入。通过注入利用,获取管理员帐号密码。
回到管理员登录页面,登录后,访问/admin/flag获得flag
4.美男子(580分)
访问网站,查看网页源代码。发现index.phps文件。
审计index.phps文件,外部可传入key1和key2参数,其中key1参数带入SQL查询。当查询结果不为空,且$_POST[‘key2’]的值等于$key[‘key2’]时,打印flag。
但所有的POST参数都经过一个名为AttackFilter()的函数,该函数过滤了union、select、from等一系列关键字,导致无法直接使用union查询。
查询结果$key[‘key2’]为未知值,使用MySQL中数据统计的应用WITH ROLLUP进行绕过。如执行GROUP BY key2 WITH ROLLUP。对于GROUP BY的列,WITH ROLLUP将不做任何处理,且返回NULL。
故执行key1=‘ or ‘‘=‘‘ GROUP BY key2 WITH ROLLUP LIMIT 1 OFFSET 1#&key2=即可获得flag。
From:http://seclab.dbappsecurity.com.cn/?p=276
作为“4.29首都网络安全日”的重要活动之一,第二届北京网络安全技术大赛于4月29日成功举办。大赛吸引了北京乃至全国的网络安全从业者以及各大高校信息安全相关专业学生的热切关注。
比赛现场
夺旗比赛展示
0x01 夺旗赛介绍
本次夺旗赛环节时间为3个小时,共有五大分类,分别为Web安全、逆向、溢出、密码学和综合。综合比赛时间及选手的实力综合考虑。
Web安全:题目会涉及到常规的漏洞及部分渗透测试相关性题目。
逆向:涉及到软件逆向、破解等技术。
溢出:通过寻找软件的漏洞后编写exploit并利用。
密码学:考察各种加解密技术,算法等,需要涉及部分编程辅助。
综合:信息安全综合题,包括信息隐写、流量分析等。
0x02 Web安全解题思路
1.The First(20分)
访问目标ip,通过nmap进行端口扫描,发现开放8888端口。
访问http://ip:port(port为8888端口),在响应包中获得flag。
关键字:信息收集、端口扫描、http报文
难度等级:●○○○○
总结:信息收集是渗透测试的重要环节,选手需要了解端口扫描原理及常见工具的使用,且需要熟悉HTTP协议。
2.贪食蛇(210分)
打开靶机,是一个经典的贪食蛇游戏。
查看源文件发现加载了snake.js文件,发现了一段代码加密且不规则。当me.snakeLength > 250 的时候执行以下代码。
直接利用firebug进行调试, 执行加密结果,返回为一个假的flag。
执行加密代码后 查看firebug DOM树, 发现window[‘flag’]选项,发现flag。
关键字:Web安全、JavaScript、JS加密
难度等级:●●○○○
总结:JavaScript广泛运用于客户端的脚本语言,选手需要熟悉JavaScript代码及调试方法。
3.新闻网站(380分)
通过简单的测试发现前台不存在漏洞。
访问/admin,发现后台管理员登陆页面,但是不存在注入或者弱口令。且有验证码,也无法暴力破解。
通过目录暴力破解(目录穷举),发现存在left.jsp文件。访问文件,存在js校验跳转,删除这段校验js或在浏览器端禁用js。
发现left.jsp功能栏有flag,链接为admin/flag,点击访问,直接跳转到首页,猜测由后端校验并跳转。
点击新闻管理,通过删除js校验,发现存在新闻管理页面。
选择一条新闻,鼠标滑倒编辑,发现有编辑链接/editqas183462News.do?ldid=。复制链接,在新窗口打开,通过 and 1=1 ,and 1=2,发现ldid参数存在SQL注入。通过注入利用,获取管理员帐号密码。
回到管理员登录页面,登录后,访问/admin/flag获得flag
关键字:渗透测试技巧、SQL注入、前端校验
难度等级:●●●○○
总结:很多开发人员为了交互友好常使用前端校验,但由于使用不当,可能导致安全风险;同时SQL注入也是极为常见的Web安全问题。选手需要掌握以上的知识考点技能,同时有一定的渗透测试经验。
4.美男子(580分)
访问网站,查看网页源代码。发现index.phps文件。
审计index.phps文件,外部可传入key1和key2参数,其中key1参数带入SQL查询。当查询结果不为空,且$_POST[‘key2’]的值等于$key[‘key2’]时,打印flag。
但所有的POST参数都经过一个名为AttackFilter()的函数,该函数过滤了union、select、from等一系列关键字,导致无法直接使用union查询。
查询结果$key[‘key2’]为未知值,使用MySQL中数据统计的应用WITH ROLLUP进行绕过。如执行GROUP BY key2 WITH ROLLUP。对于GROUP BY的列,WITH ROLLUP将不做任何处理,且返回NULL。
故执行key1=‘ or ‘‘=‘‘ GROUP BY key2 WITH ROLLUP LIMIT 1 OFFSET 1#&key2=即可获得flag。
关键字:PHP代码审计、MySQL WITH ROLLUP
难度等级:●●●●○
总结:安全从业人员常通过白盒方式进行安全评估,本题通过PHP审计发现安全漏洞,结合数据库的特殊用法,较为考验选手的功底。
From:http://seclab.dbappsecurity.com.cn/?p=276
评论7次
那天赶到现场的时候迟到了.......
学xi技巧
技巧上确实值得学xi
我觉得我的水平在最后一道题之前,最后一道题有点迷糊
技巧超赞,贴别是第三个新闻网站那个,给了我好多灵感,多谢了
感觉最后一个有点 难度=-
抢沙发? 期待其他几个方向的题目