????2 ?????????
?????????SQL???????????????????????????????ó???????????????????????????????????Щ????????????????????????????????????????????????Σ???????ó????????????????????????????????????????????????????????Щ?????????????????????????SQL????
????2.1 ??????
?????????????ó????????????????????????????????Web?????????????????(exception)????????“500:Internal Server Error”????????SQL??????????????????????δ????????????????????????????????????θ????????????y????????????滻?????????????HTML??棬?????????????????????????????????????????????????????????£???????????θ????????Щ????????????????????????????????????????????棬 ???????????????????????????κ?????
??????????????????ó??????????????????儷?????н???????????????ó???????????????Щ??Ч?????????????????????????????????????????????????????????????????Ч?????(200 OK)?????????????????????棬????????????????????????????“Internal Server Error”??
??????????????????????????????????????????????????ó???A??B????????ó????????????proddetails.asp????棬??????????????????????ProdID????????ò??????????????????????????????????????????????????Щ???????????ó???????????????б??????????????proddetails.asp?????????ProdID?????????????Ч?????ó???A???????????????????????????????????飬???????????????ProdID???????????????????в??????id?????????????????????????ó???A???????????????????????????????ü???е???????????????????????????“500:Internal Server Error”??????ó???B????????????д????????????С????0????????????????????????????“?ò????????”????????????????????????????????λ????????б???檔
??????????????????SQL????????????????Щ??Ч?????????????ó?????δ?????Щ??????????????SQL??????????????
????2.2 ??λ????
???????????????ó?????????????????????????????λ????????????????????????????????????????????????SQL???????????????????ЩSQL????????OR??AND??????ЩMETA???????;??’?????????????????????????в??????????????????????????ж??????????????????????????????(intercepting proxy)???????????????????????????????????Щ????????????????κ??????????????????п??????SQL???????????????????????????????У????????????????????Ч??????????????????????κ??????????????????μ??????????ж??????????????????????????????б???б??е??Щ??????????????????????????????Щ??????????????ЩSQL????????????????????????????????????????????Щ????????????????????????????????????????????
????2.3 ???????
????SQL??ο????????????????????????????????????????????????????????????????????????????????????ó???????SQL???????????????????????????е???????????????????????????????????????????????????????????????????磺
????SELECT * FROM Products WHERE ProdID = 4
??????
????SELECT * FROM Products WHERE ProdName = 'Book'
??????SQL??????????????????????????????????????????????????????????????ɡ??????????????????????????????????????????SQL??????????????????????????????????????????????????????????
????/mysite/proddetails.asp?ProdID=4
????????ò??????????????4’???????????????????3+1?????????????????????????????????SQL??????????γ?????????SQL???????
????(1) SELECT * FROM Products WHERE ProdID = 4'
????(2) SELECT * FROM Products WHERE ProdID = 3 + 1
?????????SQL????????????????????????????????????????????У???????????????ProdID????4????????????????????ò?????????????????
???????????????????????????????SQL??????????????滻?ò???????????????????????????????????????????е??????????????????????????SQL????????????????????????????MS SQL Server??÷???+???????????????Oracle??÷???||??????????????????
????/mysite/proddetails.asp?ProdName=Book
??????????ProdName??????????????????????????滻???????Ч???????????Book’????????滻????????????????????????????????B’+’ook??????Oracle????B’||’ook????????γ?????????SQL???????
????(1) SELECT * FROM Products WHERE ProdName = 'Book''
????(2) SELECT * FROM Products WHERE ProdID = 'B' + 'ook'
???????????????????????SQL??????????????????????????????????Book??????
??????????????????ó????????????’??+??META???????????????????????????????????URL?????????ASCII???16????????????飬???磺
????/mysite/proddetails.asp?ProdID=3+1????/mysite/proddetails.asp?ProdID=3%2B1
????/mysite/proddetails.asp?ProdID=B’+’ook????/mysite/proddetails.asp?ProdID=B%27%2B%27ook
???????????κα??????????????滻?????????????????????????????????????????????????????????????????????Oracle??sysdate????????????????????SQL Server?У?getdate()???????????????????????????????????ж???????SQL????????
???????????????????????????????????????????????????????ж???????SQL?????????????????????????
????3 ???????
????????????????????????????????????????????????????SQL?????????????????ж??????????????????????????????????
????3.1 ????????????
????????SQL????????????м??????裬???????SQL?????????????????????????????????????????????SQL????????????????????????????????ε?????????????Щ???????????????????????????
????????????????????????????SELECT … WHERE??????????????????????WHERE????????????????????????????????????????????WHERE????????????????????????????????????Щ??????ó???????????OR 1=1???????????????????????????????????????????????????????????????????????????????????????????parenthesis???????????????????????????????????????????????????????????????????????????????????????ó?????????????????????????????????SQL?????????????????ó????????????????????????????????????OR 1=1????????????1000???????????????????????WHERE???????????????OR??AND??????????????????????TRUE??FALSE??????????????????????????????????????????????????????????????????????????????????ж????????????磬???AND 1=2?????????????????FALSE???????OR 1=2???????????????????????????????????????????
?????????Щ???????????????WHERE???????????????????????????UNION SELECT????洢?????stored procedures??????????????????????????SQL?????????????????????????????????SQL?????????????£????????????????SQL????????????????÷?????????????????????--?????????SQL Server??????????е????????????磬???????????????????????????????????????????SQL???????
????SELECT Username?? UserID?? Password FROM Users WHERE Username = ‘user’ AND Password = ‘pass’
???????????john’--?????????????????????WHERE???
????WHERE Username = ‘john’ --'AND Password = ‘pass’
????????????????????SQL????????????????????????????????????????????WHERE???
????WHERE (Username = ‘user’ AND Password = ‘pass’)
?????????????????????????????????john’--?????????????????????
????WHERE (Username = ‘john' --' AND Password = ‘pass’)
?????????????δ????????????????????????С?
?????????????????????????????????ж????????????????????????????????????????в???????????ζ??????????????????????????????????????????????????????и???????????