sql注入的一些新發現,突破關鍵字過濾
保定網絡公司:保定乾坤網站建設 來源:保定網絡公司 人氣:
keywords:
導讀:一直以來都以為只有空格,tab鍵和注釋符/**/可以用來切割sql關鍵字,段時間在邪八看了風迅cms注入漏洞那篇帖子,才知道原來回車也可以用來作為分割符(以前竟然沒…
一直以來都以為只有空格,tab鍵和注釋符/**/可以用來切割sql關鍵字,段時間在邪八看了風迅cms注入漏洞那篇帖子,才知道原來回車也可以 用來作為分割符(以前竟然沒有想到,真是失。;剀嚨腶scii碼是chr(13)&chr(10),至于為什么要兩個連在一起,這個我也不知 道[嘿嘿,你不知道的話,孤行一鬼告訴你答案,在ASP中,回車符就是這兩個字符組成的chr(13)&chr(10),換行用vbcrlf ]。轉換成url編碼形式是%0d%0a,于是就可以用%0d%0a代替空格pass一些過濾空格的檢查了。
引申一下,只用%0d能正常執行語句嗎?只用%0a呢?測試證明,用任意一種分割在mssql、mysql和access里面都是可以的。 另外,關于mssql的多語句問題。我以前一直以為必須用分號作為語句的結尾,后來發現,完全不是那樣。類似
select * from table exec xp_cmdshell'xxxxxxxxxx'
select * from table/**/exec xp_cmdshell'xxxxxxxxxx'
select * from table|---tab---|exec xp_cmdshell'xxxxxxxxxx'
select * from table|---enter---|exec xp_cmdshell'xxxxxxxxxx'
的語句都是可以正常執行的。而我以前竟然一直不知道!不過這個貌似跟連接數據庫驅動有關系,odbc可以正常執行,sqloledb的話就會報錯。有興趣的繼續研究吧
這樣,以后遇到帶空格過濾關鍵字的攔截程序,又可以發揮發揮了?赡艽蠹以缇椭懒,不管怎么說,發在這里吧!
最近想起可能還有些ascii碼可以用來在sql語句中代替空格,于是寫個腳本測試了一下,結果在所有128個低位ascii字符 中,chr(12)也可以在access里用,不過貌似chr(12)不能出現在and、or之類的關鍵詞附近,原因不清楚。mysql中比access 多一個chr(11)可以。至于mssql,挖日,直接從1到32的ascii碼換成字符后都可以正常使用。
|