web8
打开以后又是php代码
解读一下:
包含flag.php文件
读入一个参数为hello的数据(REQUEST相当于get+post)
eval( “var_dump($a);”);————检测是否为php语句,若是则执行
show_source(__FILE__);————整个文件“高亮显示”(__FILE__是“整个文件”的意思,至于“高亮显示”,我的理解是把代码按照一定颜色规则排布在页面上)
所以这道题涉及到了php语句的问题,那方法就会很多了
我首先想到的是用shell(盲猜是linux系统)
直接hello= `cat flag.php`(两边是用的“反引号”(键盘左上角那个),相当于把里面的内容当shell使用,自从有一次被限制字数后,就再也不用system()了)
虽然显示有103个字符,但是没法输出。
然后用hello= `tac flag.php`,却能输出flag(相当于cat的“反序输出”,但只是“行之间反序”)
为什么用tac而不是cat:因为那个php文件带有,正序输出会被网页当做php代码运行(结果为空),但是不在同一行,所以tac反序输出使其不闭合,才可以显示其字符串的形式
这样就得到了flag
当然还有一种注入的方法,通过闭合前面以及注释掉后面来输出flag
当然还有一种思路是用?hello=get_file_contents(‘flag.php’)或者?hello=file(‘flag.php),直接把文件内容写入hello,然后输出,但是这种方法被封了(似乎是权限给的不够,当然,如果权限够的话,甚至可以用cp指令,然后读文件,但是尝试后发现返回null说明不行)