在查看 SQL 注入攻击的服务器日志时,很明显您在寻找什么(即单引号、1=1 等),但它让我想知道 2=2 等与 SQL 是如何相同的。
那么有没有办法检查用等号分隔的相同数字?
IE。1=1, 2=2, 3=3 全部匹配,但 1=2 不匹配。
在查看 SQL 注入攻击的服务器日志时,很明显您在寻找什么(即单引号、1=1 等),但它让我想知道 2=2 等与 SQL 是如何相同的。
那么有没有办法检查用等号分隔的相同数字?
IE。1=1, 2=2, 3=3 全部匹配,但 1=2 不匹配。
您可以根据正则表达式的风格和工具使用反向引用
([0-9])=\1
这里我们使用捕获组中的一个数字,([0-9])
然后使用反向引用\1
来引用我们第一个组中捕获的值
不,您不能仅使用正则表达式,除非您枚举所有可能性 1=1 2=2 3=3 (或者如果是这样,我也希望看到!)
您需要一个正则表达式来匹配和一个脚本来处理,awk
这将在一行中完成(假设您正在使用 Bash 来查看您的日志)
echo "aaa 12=11 aaa
bbb13=13 bbb
ccc 678=6789 ccc
ddd 9999=9999ddd" | awk '{ match($0, /([0-9]+)=([0-9]+)/, arr); if(arr[1] == arr[2]) print arr[0] }'
将输出
13=13
9999=9999