今天在bugku刷到了一道基础题,感觉考察的很全面。
源代码如下
第一行
include是将flag.php包含在页面代码中,也不难推测flag在flag.php中
第二行
$_REQUEST可以将用户传入的hello传给服务器
第三行分两个部分:eval和var_dump
var_dump即把输入的hello作为字符串string输出
eval则可以把字符串当作php代码执行
把hello赋值为system("ls")
发现包含flag.php和index.php
然后在system中cat flag
发现并没有打印flag,在查看器中找到了,一般来说能找到flag却没有但打印出那么就在注释里
ctrl+u查看源代码也能看到
看到别人的writeup可以使用file()
函数先将flag.php
的内容存入数组,然后这个数组会被var_dump()
和eval()
函数输出到页面
那么hello=file("flag.php")也可以被eval打印出flag。
此外方法还有
?hello=system(‘tac flag.php’)