bugku 1~11题 write up(web)
一、第一题(web2)
查看源代码,查找flag,即可得出flag。
二、第二题(计算器)
输入163,发现只能输入一位数。位数被限制了。我们使用火狐浏览器的开发者工具(F12)调出来。定位到输入框的位置。发现
最大位数被限制了,把1改成3即可得出flag。
三、第三题(web基础$_GET)
打开题目发现是PHP代码,阅读代码可知,我们在URL中传入参数?what=flag即可得出flag
四、第四题(web基础$_POST)
打开题目发现是PHP代码,阅读代码可知,需要使用POST方式传值。
使用火狐浏览器的hackbar插件,如图
五、第五题(矛盾)
先介绍下is_numeric()函数:
is_numeric() 函数用于检测变量是否为数字或数字字符串。
PHP 版本要求:PHP 4, PHP 5, PHP 7
如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
分析代码,可知,num必须==1,但是又不能是数字或者是数字字符串。
==又表示只要值相等就可以了。那么我们可以在输入num=1XXX,xxx表示非数字。
六、第六题(web3)
1、进入题目发现一直在弹窗,点了几遍确定后感觉被耍了。
2、阻止弹窗查看源码。发现flag在最后一行的alert标签里。且被注释掉
3、发现flag是&#x类型的,这是unicode编码。不知道也没事,百度下就可以知道
4、百度搜索unicode在线解码,就可以得出flag。
七、第七题(域名解析)
看到题目域名解析我们就要想到hosts文件。
我们打开hosts文件
hosts文件位置C:\Windows\System32\drivers\etc
在文件末尾加入123.206.87.240 flag.baidu.com
在浏览器中输入flag.baidu.com或者123.206.87.240 即可得出flag
八、第八题(必须让他停下来)
打开题目发现一直在刷新,
观察源码,发现flag应该在图片刷出来的时候出现。我们使用burp suit进行抓包放包,经过了j几次(GO)操作之后,我们发现了flag.
九、第九题本地包含
观察代码发现flag.php被隐藏起来了。
尝试下传入参数?hello=hello,发现hello在下面代码中体现
这样我们就可以直接传入参数输出flag.php文件的内容,发现flag。
传入的参数是?hello=file(“flag.php”)
十、第十题(变量1)
观察源码发现代码最后一行有个可变变量。
我们让args=GLOBALS 全局数组变量
因为$args=GLOBALS 又var_dump($$args) ,所以和前面那个$ ,组成$GLOBALS
flag变量又在$GLOBALS中,var_dump eval 成功得到flag
$GLOBALS介绍
-
$GLOBALS['var']是外部的全局变量本身,在函数内部可以使用$GLOBALS数组调用
2.作用域:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
$GLOBALS超全局数组适用于任何地方
十一、第十一题(web5)
首先介绍下JSPFUCk
JSFuck(或为了避讳脏话写作 JSF*ck )是一种深奥的 JavaScript编程风格。以这种风格写成的代码中仅使用 [、]、(、)、! 和 + 六种字符。此编程风格的名字派生自仅使用较少符号写代码的Brainfuck语言。与其他深奥的编程语言不同,以JSFuck风格写出的代码不需要另外的编译器或解释器来执行,无论浏览器或JavaScript引擎中的原生 JavaScript 解释器皆可直接运行。鉴于 JavaScript 是弱类型语言,编写者可以用数量有限的字符重写 JavaScript 中的所有功能,且可以用这种方式执行任何类型的表达式。
简单地说,就是有人不想让自己的代码被别人认出来,用6种字符改造了自己的js代码
我们查看源码发现有一堆的 [、]、(、)、! 和 + ,把他们扔进浏览器控制台(火狐浏览器按F12打开控制台)进行调试,即可得出flag,记得要大写。
上一篇: bind、call和apply对比和使用
下一篇: JavaScript基础-3