积分:30

进题能看到两个按钮。先按一下Login。

按Login后我们能被带到新的directory。我随便拿“knowmysin”和“1234”来试一试。

反而按join的话会有个提示说禁止访问。那看一下原页的源码。

看来Join是个假的按钮。那好像根本没法用正规方法来登入系统。这时候我们需要发挥一点机智说白了就是蒙。因为login按钮把我们带到login.php,我们可以推测join在mem/join.php。

果然真有。一进去会有个alert写着bye。但他不会立马把我们送到原本的页面,反而会停留在一片黑色的空页面。

那看看源码是否也是空着的。

果然里面由内容。但这个一眼很难看出来是什么东西。我来整理一下源码的Java Script部分。

(在Whale浏览器上可以按Edit as HTML来复制所有内容。)

l = 'a';
ll = 'b';
lll = 'c';
llll = 'd';
lllll = 'e';
llllll = 'f';
lllllll = 'g';
llllllll = 'h';
lllllllll = 'i';
llllllllll = 'j';
lllllllllll = 'k';
llllllllllll = 'l';
lllllllllllll = 'm';
llllllllllllll = 'n';
lllllllllllllll = 'o';
llllllllllllllll = 'p';
lllllllllllllllll = 'q';
llllllllllllllllll = 'r';
lllllllllllllllllll = 's';
llllllllllllllllllll = 't';
lllllllllllllllllllll = 'u';
llllllllllllllllllllll = 'v';
lllllllllllllllllllllll = 'w';
llllllllllllllllllllllll = 'x';
lllllllllllllllllllllllll = 'y';
llllllllllllllllllllllllll = 'z';
I = '1';
II = '2';
III = '3';
IIII = '4';
IIIII = '5';
IIIIII = '6';
IIIIIII = '7';
IIIIIIII = '8';
IIIIIIIII = '9';
IIIIIIIIII = '0';
li = '.';
ii = '<';
iii = '>';
lIllIllIllIllIllIllIllIllIllIl = lllllllllllllll + llllllllllll + llll + llllllllllllllllllllllllll + lllllllllllllll + lllllllllllll + ll + lllllllll + lllll;
lIIIIIIIIIIIIIIIIIIl = llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + lll + lllllllllllllll + lllllllllllllll + lllllllllll + lllllllll + lllll;
if (eval(lIIIIIIIIIIIIIIIIIIl).indexOf(lIllIllIllIllIllIllIllIllIllIl) == -1) {alert('bye');throw "stop";
}
if (eval(llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + 'U' + 'R' + 'L').indexOf(lllllllllllll + lllllllllllllll + llll + lllll + '=' + I) == -1) {alert('access_denied');throw "stop";
} else {document.write('<font size=2 color=white>Join</font><p>');document.write('.<p>.<p>.<p>.<p>.<p>');document.write('<form method=post action=' + llllllllll + lllllllllllllll + lllllllll + llllllllllllll + li + llllllllllllllll + llllllll + llllllllllllllll +'>');document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name=' + lllllllll + llll + ' maxlength=20></td></tr>');document.write('<tr><td><font color=gray>pass</font></td><td><input type=text name=' + llllllllllllllll + lllllllllllllllllllllll + '></td></tr>');document.write('<tr align=center><td colspan=2><input type=submit></td></tr></form></table>');
}

这大概就是里面写着的内容。不想手动雅化Js的话可以用beautify.js也可以。【1】一看就能看出上半部是个Hash Table,下半部是代码混淆(Code Obfuscation)过的的script。这个我建议手动翻译,或者用一下Console。甚至上两句跟后面完全不一样。编程来解除代码混淆的话还需要编两种函数。总而言之,解除代码混淆后的JavaScript大概是这个样子。

oldzombie = oldzombie
document.cookie = document.cookie
if (eval(document.cookie).indexOf(oldzombie) == -1) {alert('bye');throw "stop";
}
if (eval(document.URL).indexOf(mode=1) == -1) {alert('access_denied');throw "stop";
} else {document.write('<font size=2 color=white>Join</font><p>');document.write('.<p>.<p>.<p>.<p>.<p>');document.write('<form method=post action='join.php'>');document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name='id' maxlength=20></td></tr>');document.write('<tr><td><font color=gray>pass</font></td><td><input type=text name='pw'></td></tr>');document.write('<tr align=center><td colspan=2><input type=submit></td></tr></form></table>');
}

首先,前面的两个if要求我们带着oldzombie的COOKIE和mode=1的GET来访问这个页面,否则不显示。那我们就按它的要求来加一下这些东西。

按要求做的话我们会看更新的页面。更新后的页面如下。我随便拿我的id和“1234”来试试注册。

系统显示说注册成功,我就以为这题就已经解决完了。

可是系统突然说只有admin能进入这个页面。所以我回到Join.php拿“admin”和“1234”重新试了一次。

但系统说已经有这个ID。

这时候我们需要试试各种方法。作为一个网络安全专家,%20(空白)、%00(NULL)、空白这些我们都需要试一试。最终,我发现的漏洞是空白。在admin前面加个空白就可以。虽然“ admin”这个账号会正常登入到后台的DB,但“ admin”和“admin”在PHP的strcmp阶段是一样的。(关于具体用的是strcmp()还是==、还是===、还是其他的,这个因为系统不显示所以很难断定。但我们可以推测是==因为这个漏洞最多。)这也是PHP衰落的原因。关于PHP Comparison Vulnerability,可以参考一下日暮途远的PHP弱类型比较(松散比较)方面的漏洞。

当然由于上述原因,输入id的时候我们同样需要在id最前面加个空号。

成功页面

参考内容:

【1】脚本之家在线工具——JavaScript在线格式化工具(基于beautify.js插件)

【Web】Webhacking.kr旧版第五题相关推荐

  1. Web实现:旧版微博个人页整体实现

    微博已经改版了,这部分代码还是很久之前写的,旧版的个人主页,分享一下. HTML部分: <!DOCTYPE html> <html lang="en">&l ...

  2. 04737 c++ 自学考试2019版 第五章程序设计题 1

    /* * 04737 c++ 自学考试2019版 第五章课后练习 * 程序设计题 1 * 需求:交通工具包含汽车,汽车又包含..... */#include<iostream> #incl ...

  3. 《C语言程序设计》谭浩强 第五版 编程10题解答2

    <C语言程序设计>谭浩强 第五版 编程10题解答2 11.素数计算 编写程序计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔减.加之和,即第1个素数- ...

  4. 儿歌点点 换歌不算题 旧版 历史版本

    儿歌点点 换歌不算题 旧版 历史版本 edit 2.4.28版本之后,打开未看过的儿歌需要算题,这个对于1-4岁的宝宝显然不合适,对于老人看那么小的键盘也是不合适,希望儿歌点点官方能修改下策略. 这里 ...

  5. java孙膑与庞涓_一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓...

    一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 一个很难的数学问题(智力1 ...

  6. 【JavaScript 逆向】猿人学 web 第五题:乱码增强

    案例目标 网址:第五题 js 混淆 乱码增强 - 猿人学 本题目标:抓取全部 5 页直播间热度,计算前 5 名直播间热度的加和 常规 JavaScript 逆向思路 一般情况下,JavaScript ...

  7. 博大考神》2006版之Word2003题库版操作提示

    <博大考神>2006版之Word2003题库版操作提示 作者:- <script src="http://www.2008red.com/red_vip/articlehi ...

  8. 每日五题-202112

    [12.01  周三] 今日五题: 1.你正在管理人力资源薪资系统的设计和开发.由于项目的复杂性,你使用 Scrum 来帮助你管理此项目.你的项目需要以公告和消息的形式与大量受众进行沟通.在这种情况下 ...

  9. 每日五题-202111

    [11.01  周一] 1.一个项目已经失控,项目经理正试图重新控制它并对项目范围进行了一些更改.其中一些变更导致进一步的变化,项目成本上升,项目进度也超出计划.这称为: A.项目蠕变 B.范围上升 ...

  10. 癌症新知和癌症真相的区别_旧版代码是癌症

    癌症新知和癌症真相的区别 It's far too often that I see people shying away from newest technologies in the spirit ...

最新文章

  1. Oracle定时执行存储过程
  2. ASP.NET 网页- WebGrid 帮助器简介
  3. 关于R语言的一些编程经验
  4. windows中以管理员身份运行cmd
  5. 为什么Java中只有值传递?
  6. 5分绩点转4分_工作复盘|因为这5点,4月份目标没完成
  7. python requests form data_Python爬虫:Request Payload和Form Data的简单区别说明
  8. linux命令行快捷命令及vim常用快捷命令
  9. Spring MVC学习总结(7)——Spring MVC整合Ehcache缓存框架
  10. 【云周刊】第200期:云栖专辑 | 阿里开发者们的第6个感悟:享受折磨
  11. vmware linux虚拟机中添加硬盘
  12. PyTorch以及VGG模型
  13. 终极大招~pycharm自动补全opencv代码提示功能
  14. 【分享】 [教学]破解完全入门篇
  15. 互联网单点登录集成方案
  16. 信息学奥赛一本通:1084:幂的末尾
  17. 【运筹优化】Python调用OR-Tools求解TSP问题
  18. 认识哈希函数和哈希表
  19. 科技型中小企业认定标准
  20. 力天创见客流计数方案

热门文章

  1. 【安信可首款4G模组CA-01直连阿里物联网平台②】一机一密认证方式连接
  2. 英语3500词(七)dating主题(2022.1.19)
  3. esp8266调用心知天气
  4. CoMP 协同多点传输技术
  5. QT的按钮设置图标及设置透明
  6. Pytorch入门实战(7):基于BERT实现文本隐喻二分类(Kaggle入门题目)
  7. 深度神经网络识别垃圾邮件
  8. 服务器raid5阵列硬盘故障的解决办法
  9. vue3使用keep-alive页面切换时报错:TypeError: parentComponent.ctx.deactivate is not a function
  10. 提升思考力的8种日常训练法