题目取自于bugku

题型web,隔了那么长时间没看,bugku居然放了那么多道基础的题目???长见识了长见识了……

GET

取题:

"第一题题目"
"第一题题目"

思路:

题目给出的提示很明显,需要一个Get,我们直接在URL框框内赋值一个get变量就行。具体的如下:

http://114.67.175.224:13409/?what=flag

下面是最终的结果,得到flag:
"第一题题目"
"第1题题目"

简单总结

这里涉及的知识点不多,相比之前看天书一样的感觉真的是太简单了……
知识点仅仅需要会get传参就行,剩下就是简单的把参数调整正确就能出结果了。

简单说一下两道题目

一道题目是“滑稽”,只需要打开F12键查看下代码注释就可以得到。

另一道就是“计算器”,只需要打开F12键,查看下调试器的js文件就能看到,里面有一个明显的“echo flag{*******}”(*号代flag,自己去看吧,我省点硬币……)

下面是成功完成的界面。

"第3题题目"
"第3题题目"

POST

取题:

"第4题题目"
"第4题题目"

思路:

题目给出的信息为post,说明要使用post传参。题目和get一样,将指定的值传给参数what,再通过post提交。

这里需要用到一个工具:Max HackBar,具体怎么安装有时间再讲。

下面就是传参的效果了,直接得到flag:

"第4题题目"
"第4题题目"

矛盾

得题

"第5题题目"
"第5题题目"

思路

第一个直觉是绕过。绕过学得不怎么扎实,先分析下代码:

$num=$_GET['num']; // 获取get传参的值
if(!is_numeric($num)) // 单分支if判断,is_numeric是一个php函数,"!"是逻辑'或'
{
echo $num;
if($num==1) // 判断变量是不是1,是则输出flag
echo 'flag{**********}';
}

综上所述,flag的必要条件就是num必须等于1.

但不得不考虑的是,num在is_numeric时就已经将数字过滤掉了。那么怎么将参数传进去呢?

必须绕过is_numeric,把数字1传进去。

这里引用一个大佬的博客文章做参考is_numeric函数的绕过,使用空格“%00”作为绕过条件,is_numeric会判断,因为空格存在,判断时直接跳过,保留下数字进行后面的

if($num==1) 

的判断。

下面直接实际演示:
"第5题题目"
"第5题题目"

接下来继续学习喽(时间真打紧呐……)~