百度杯全国网络安全技术对抗赛(BCTF)——真假难辨
2014-03-26 13:03
417 查看
描述
唯有游戏与美食不可辜负。米特尼克拿到Alice的资料之后接着在BAT内网游荡,他发现了一个被限制的游戏,只有管理员Alice自己才能玩,但区区一个管理员的限制怎么能挡住米特尼克爱游戏的心!http://218.2.197.238:8081/76446cb94ef19b1d49c3834a384938d1/web200/
解题思路
打开地址http://218.2.197.238:8081/76446cb94ef19b1d49c3834a384938d1/web200/ 网页
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/f5ac8fe78c022e0f0de68c228e781f46)
提示是只能在本机玩,我第一时间想到是http数据头的某些信息修改,在尝试几个未果的前提下,用谷歌浏览器查看网页源码发现提交表单有一个隐藏属性的input
因此猜测可能是通过这个客户端提交的IP地址来区分本地用户和远程用户。直接修改ip的value为“127.0.0.1”以后提交,进入一个需要Authentication的页面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/66790ad4a62c6a89b84b28ceb99c658b)
猜测几组数据发现不能通过认证,于是想到用脚本来暴力破解,用python写一个Authentication暴力的程序,最终得到暴力破解结果
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/1c40c7f1f3bc06aac9a0140fa0ed7362)
从运行结果可知用户名和密码都是admin,在网站上输入admin/admin之后,进入一个游戏页面,玩了几局发现根本就打不死怪物!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/89b1c4282e49ee7854df9e338e890907)
查看源码发现这是一个js小游戏,没办法只有把网页源码全部扒下来,试着在本地运行。查看js源码寻找游戏运行的参数,游戏开始出代码为
猜测Flag会以弹出对话框的形式出现,搜索alert字符串发现游戏确实会弹出包含key的对话框。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/2105c5e3e0dd917f206d7099c4ce9410)
key的生成算法如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/26/5464ee2268b1976ec76e1836e66e90e1)
分析key的生成算法太麻烦了,能不能换个思路,把老怪打死然后得到Flag呢?
于是寻找怪物的游戏参数,发现怪物的生命值为20,玩家的生命值只有5,怪不得一直打不死怪物呢!玩家的游戏参数定义代码如下:
可以将怪物的生命值和移动速度减小
增加玩家player的生命值和移动速度,保存修改后的游戏源码,再玩一局就可以把怪物打死了,在终点处会弹出一个对话框,Flag如下图所示。
唯有游戏与美食不可辜负。米特尼克拿到Alice的资料之后接着在BAT内网游荡,他发现了一个被限制的游戏,只有管理员Alice自己才能玩,但区区一个管理员的限制怎么能挡住米特尼克爱游戏的心!http://218.2.197.238:8081/76446cb94ef19b1d49c3834a384938d1/web200/
解题思路
打开地址http://218.2.197.238:8081/76446cb94ef19b1d49c3834a384938d1/web200/ 网页
提示是只能在本机玩,我第一时间想到是http数据头的某些信息修改,在尝试几个未果的前提下,用谷歌浏览器查看网页源码发现提交表单有一个隐藏属性的input
<input type="hidden" name="ip" value="220.202.153.57">
因此猜测可能是通过这个客户端提交的IP地址来区分本地用户和远程用户。直接修改ip的value为“127.0.0.1”以后提交,进入一个需要Authentication的页面
猜测几组数据发现不能通过认证,于是想到用脚本来暴力破解,用python写一个Authentication暴力的程序,最终得到暴力破解结果
从运行结果可知用户名和密码都是admin,在网站上输入admin/admin之后,进入一个游戏页面,玩了几局发现根本就打不死怪物!
查看源码发现这是一个js小游戏,没办法只有把网页源码全部扒下来,试着在本地运行。查看js源码寻找游戏运行的参数,游戏开始出代码为
cnGame.loader.start(gameObj, { srcArray: srcObj });
猜测Flag会以弹出对话框的形式出现,搜索alert字符串发现游戏确实会弹出包含key的对话框。
key的生成算法如下:
分析key的生成算法太麻烦了,能不能换个思路,把老怪打死然后得到Flag呢?
于是寻找怪物的游戏参数,发现怪物的生命值为20,玩家的生命值只有5,怪不得一直打不死怪物呢!玩家的游戏参数定义代码如下:
var player = function(options) { this.init(options); this.moveSpeed = 5; this.isJump=false; this.shootDuration=600; this.hurtDuration=1000; this.life=5; this.lastShootTime=(new Date()).getTime(); this.lastHurtTime=(new Date()).getTime(); var authp = function(a, b) { var c = 0xfff; var d = 0xfff; var e = a - b; var f = a + b; var g = a * b; c = c * d; c += c * d; d = d * e + f * g; g = f | d; g = g ^ f; f = g * f; return f; } this.pe = authp(this.moveSpeed, this.life); }怪物的初始化参数代码如下:
var ghost = function(options) { this.init(options); this.moveSpeed=20; this.life=20; var auth = function(a, b) { var d = a; var e = b; var a = 0xfff; var b = 0xff; var c = 1024; a = a << 2; a = a << 6; b = a + b; c = a + b + c + d + e; return c; } this.gh = auth(this.moveSpeed, this.life); }
可以将怪物的生命值和移动速度减小
this.moveSpeed=1; this.life=5;
增加玩家player的生命值和移动速度,保存修改后的游戏源码,再玩一局就可以把怪物打死了,在终点处会弹出一个对话框,Flag如下图所示。
相关文章推荐
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(网络与协议)
- BCTF 百度杯网络安全大赛 题解
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(网络与协议)
- 第三届全国网络空间安全技术大赛 Web补题 By Assassin(持续更新)
- 无线传感器网络安全技术 研究方向总结 Wireless Sensor Networks Security
- 网络安全风险评估关键技术研究
- 第二届“强网杯”全国网络安全挑战赛来袭
- “网络隔离”安全技术发展方向概述
- 华为网络设备上的常用安全技术(一)
- 国内网络安全风险评估市场与技术操作
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(WEB安全)
- 浅谈学习网络安全技术必备的一些网络基础知识
- 网络安全基础之加密技术
- 2006年全国信息网络安全状况与计算机病毒疫情调查分析报告
- AI技术沦为网络黑产新工具 马化腾首提安全共治中国方案
- 百度杯全国网络攻防大赛——初来乍到