1.alert
ctrl+U查看源代码,在最底下发现了flag迹象,Unicode解码之后得到flag。
2. game1
前端java游戏类题目,我们前端玩游戏的数据,总是要传给后端的,可以拦截数据包,修改数据。
先玩一局游戏,之后打开F12的network可以看见游戏数据。
score.php传输了我们的score得分,ip和sign。
查看源码可知,sign是score经过base64加密的一种形式。但是我们的得分175经过base64 加密后发现是MTc1 ,而现在的sign是ZMMTc1==,所以得知 sign = "zM" + base64(score) + "=="。
之后我们get一个更大的分数99999,其base64编码OTK5OTK= ,将sign值也与其对应。
得到flag。
3. bp
打开网址,已知用户名为admin。看题目提示是弱密码top1000里z开头的,在burp_suite中intruder导入密码字典,攻击发现长度都一样。
通过观察响应包里面的内容,我们发现错误包里面都会返回一个JavaScript代码告知我们的密码有错误,所以我们通过burp_suite的 (grep – match 在响应中找出存在指定的内容的一项。)过滤掉存在JavaScript代码中的{code: 'bugku10000'}的数据包。
发现密码是zxc123. 输入得到flag。
4. shell
看题目的描述
可以知道,是一句话php木马,assert($_GET['s']).
所以我们在传递s指令,获得系统内有一个flag文件名为flaga15808abee46a1d5.txt。
s=system("cat flaga15808abee46a1d5.txt").得到flag。
5. eval
解析php代码。
题目先通过include包含了"flag.php"文件,后使用@$_REQUEST['hello']来传递参数hello。
var_dump()
会将传入的变量打印到页面,eval()
会执行传入到其中的php代码,eval("var_dump($a);")
就是把$a
的内容打印出来.所以我们给hello赋值,执行后会把hello的类型和内容打印出来。
使用file()函数把flag.php的内容存起来传递给hello即可。
6.变量1
error_reporting(0); //关闭php错误显示 include "flag1.php"; // highlight_file(__file__); //将代码更加高亮 if(isset($_GET['args'])){ //isset()函数,判断get方法传递的args参数是否存在 $args = $_GET['args']; // 传递参数赋值给变量$args if(!preg_match("/^\w+$/",$args)){ /^开始,\w表示任意一个单词字符,a-z,A-Z,0-9.
die("args error!"); //输出args error! } eval("var_dump($$args);"); //打印 $($args). }
eval()函数存在命令执行漏洞 .我们的目标是查看flag1.php中的flag 首先想到的是本地包含漏洞查看源码 ,或者上传一句话木马等思路 。而本题条件判断加了正则表达式判断,过滤了括号和引号等字符。无法构造.但输出时是 $$args
构造 php中超全局变量$GLOBALS ,PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
/?args=GLOBALS.
eval("var_dump($$args); 当成代码执行 var_dump($GLOBALS);
var_dump()函数将$GLOBALS数组中存放的所有变量以数组的方式输出 得到flag!
7.社工-伪造(奇奇怪怪)
随便输入一个自己的QQ号先登录。
然后点开小美的qq空间。
可以看见,他男朋友给他发flag的话才可以得到flag。所以我们假扮成他的男朋友,通过搜索qq号得到头像,把自己qq改成他头像,然后名字改成她给男朋友的备注小bug。之后刷新重新登陆,发flag,得到flag。