eval代码执行漏洞

payload :POST传入search.php文件

searchword=if{searchpage:year}&year=:e{searchpage:area}&area=v{searchpage:letter}&letter=al{searchpage:lang}&lang=(join{searchpage:jq}&jq=($_P{searchpage:ver}&ver=OST[9]))

漏洞代码:

结合payload来说,就是if{searchpage:year}替换成if:e{searchpage:area}再替换成if:ev{searchpage:letter}然后最后替换成if:eval(join($_POST[9]))。总的来说,就是if{searchpage:year}将中括号里的内容替换成year里的内容,其他同理。

继续跟进代码:

ctrl右键跟进

 来到另外一个文件,看到parseif方法,审计以下parseif方法,直接看重点。开头判断$content是否存在{if:},存在继续往下走,没有存在直接跳出函数。往下走遇到preg_match_all($labelRule,$content,$iar);,正则匹配,将结果放回给$iar,继续跟进代码,发现for循环中有eval危险函数,关注eval函数。if判断,$strThen是否存在于$labelRule2,不存在继续往下走。又有一个if,判断$strThen中是否有$labelRule3,如果有则进入eval函数,执行$content中的内容。

原文地址:https://www.cnblogs.com/aptkekeo/p/13953640.html