2014-02-21 36 views
1

我想了解某人如何攻擊我客戶的網站。我正在使用^(?!.*404).*194\.226.*$搜索日誌文件,嘗試在日誌文件中找到一行,其中IP地址以194.226開頭的某人正在訪問未導致404結果的服務器。正則表達式包含字符串的一部分,但不包括strig的另一部分

日誌文件中的典型行是194.226.xx.xx - - [18/Feb/2014:01:45:10 +0100] "GET /tikiwiki/tiki-graph_formula.php?w=1&h=1&s=1&min=1&max=2&f[]=x.tan.phpinfo()&t=png&title=http://www.google.com/humans.txt? HTTP/1.0" 404 84403 "-" "-" 163 84852

我假設接近行尾的404是404,因爲它遵循HTTP/1.0響應。

重要的是194.226 IS在行中,但404不在行中。從這裏的研究RegExp Look for part but exclude If,我想出了上述路線。它要麼沒有工作,要麼找不到。我無法知道哪一個,因爲日誌文件的大小是2188MB。

我的問題:正則表達式是否正確?

+0

什麼工具/語言是您使用? '^ $'表示* string *的開始和結束。您可能想使用'm'修飾符將其「轉換」爲*行*的開始和結尾。但這取決於你使用的工具/語言。 – HamZa

+0

嗨HamZa,我使用UltraEdit,它使用Perl兼容的正則表達式。然而,自從這篇文章以來,我已經下載了另一個大日誌文件,並且確實發現它確實有效。因此 - 對於那些感興趣的人,我在查詢中發現了這一點,顯示黑客竊取密碼的一種可能方式:'194.226.xx.xx - - [18/Feb/2014:01:34:03 +0100]「GET/index .php?page = ../../../../../../../../etc/passwd%00 HTTP/1.0「200 83670」 - 「」 - 「97 84112' –

+0

在網站上自己運行該URL並不會向我返回任何錯誤信息,但情況並非如此,但它可能是:-) –

回答

1

我想這應該幫你搬

^194\.226\.((?!404).)*$ 

演示:http://regex101.com/r/eM5bR8

+0

雖然HamZa對我的問題的評論對我很有幫助,但您先回答了實際問題,我會接受您的答案。謝謝,aelor! –

1

是,正則表達式是正確的,只要你可以肯定的,那404不是IP-ADRESS

+0

雖然404可以是[IP地址](http://www.unix.com/man-page/Linux/3/inet_addr/)的一部分,但假設日誌文件輸出點分十進制表示法是安全的。 – nhahtdh

1

使用此正則表達式的一部分:

(?!.*404).*\b194\.226\b.* 

此外,你需要使用多行標誌,以便它匹配所有這些。

相關問題