HTTP參數污染注入源於網站對於提交的相同的參數的不同處理方式導致。
例如:
www.XX.com/a?key=ab&key=3
如果服務端返回輸入key的值,可能會有
一: ab
二:3
三:ad3
這三種不同的方式。
具體服務端處理方式如下:
Web服務器 |
參數獲取函數 |
獲取到的參數 |
PHP/Apache |
$_GET(“par”) |
Last |
JSP/Tomcat |
Request.getParameter(“par”) |
First |
Perl(CGI)/Apache |
Param(“par”) |
First |
Python/Apache |
Getvalue(“par”) |
All(List) |
ASP/IIS |
Request.QueryString(“par”) |
All(comma-delimited string) |
假設輸入www.xx.com/a?key=select&key=1,2,3,4 from table
服務端有可能會將key處理為select 1,2,3,4 from table,從而導致SQL注入。