菜狗杯---web(四)

化零为整

看到题目应该也是一个提示,那么我们先来看一下给的php代码:

菜狗杯---web(四)_第1张图片

 我们肯定要让result的值为“大牛”才能拿到flag,那么在代码中有几点:

  • 首先是一个for循环,循环次数是count($_GET),也就是get中的传入的变量数量;
  • 第一个if语句中的strlen()函数就是要求每个变量的值,其字节长度都不能超过1,否则程序就会被终结;
  • else中的语句就是将每次的参数和原来的result变量进行拼接。

在php中值的拼接可以用“+”来拼接,但是变量和变量之间,要用 “.”  拼接。

那我们通过题目的提示也可以想到应该是每个参数传递的一个值组成“大牛”。

那么因为是GET方式传递参数,首先我们需要知道正常字母和数字都不编码,中文的url编码是占用3个字节,“大牛”也就是6个字节:

菜狗杯---web(四)_第2张图片

 那么我们的payload就可以设置为:

?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B

成功拿到flag:

菜狗杯---web(四)_第3张图片

无一幸免

看到题目感觉意思比较简单明了,只要get传入的参数“0”为真,也就是存在,array[]数组为真(存在)的时候,得到falg,那我们就需要将变量“0”的值传入就行了:

菜狗杯---web(四)_第4张图片

传说之下 

打开是个游戏,玩一下试试,玩完发现也没什么包交互,估计就是在前端找问题了;F12打开开发者工具,发现控制台里有提示:

菜狗杯---web(四)_第5张图片   

 这意思就是让我得玩到2077分呗,那得玩到哪辈子,先试试直接改分数吧:

菜狗杯---web(四)_第6张图片

 发现并不管用,可能是我改的地方不对,于是打开调试器查看源代码,先ctrl+F全局搜索一下“score”  :

菜狗杯---web(四)_第7张图片

 找到了吃果子加一分的这行代码,既然没能直接改分,那我们就改成吃一个加2077分。要改js代码的话,先在这行下个断点(点击275即可),然后在控制台中输入更改后的代码:

菜狗杯---web(四)_第8张图片

 然后在调试器中点击继续,吃个果子,就已经到分数了,游戏结束之后就能看到flag了。菜狗杯---web(四)_第9张图片

你可能感兴趣的:(php,java)