今天數據庫又被注入了。。。我%……——#¥%……**)——¥%——*
搞了一上午,終于把數據庫還原了過來。。。真不知道對方是怎么注入的,無意中聽同事說了一句,以前另一個同事說插入數據也可以用十六進制插入的,加上之前我看過一篇文章也是在構造SQL注入語句的時候有一大堆亂78糟的字符的。。自己試了一下,果然是可以用十六進制來插入數據。。如下:
這是普通的插入數據的SQL語句:
這是采用十六進制插入數據的SQL語句:
以上SQL語句都可以執行,執行過后都是在proname字段的后頭加上<script>alert(123)</script>
0x3C7363726970743E616C65727428313233293C2F7363726970743E是怎么來的呢?0x是十六進制的開頭前綴,后面一大亂字母才是<script>alert(123)</script>,我們可用些可以查看十六進制的文本編輯器來轉換,如UltraEdit等,如圖:
把中間的那些字母間的空格去掉就可以了!!!
我在做該項目的時候插入數據時我沒把相應的HTML代碼去掉,只是在取出的時候把HTML代碼去掉了。不過只限于論壇,唉,還得把頁面所有的輸出全都要把HTML代碼去掉才行。
搞了一上午,終于把數據庫還原了過來。。。真不知道對方是怎么注入的,無意中聽同事說了一句,以前另一個同事說插入數據也可以用十六進制插入的,加上之前我看過一篇文章也是在構造SQL注入語句的時候有一大堆亂78糟的字符的。。自己試了一下,果然是可以用十六進制來插入數據。。如下:
這是普通的插入數據的SQL語句:
declare @str varchar(100) set @str='<script>alert(123)</script>' update tb_product set proName=proName+@str where proID = 35
這是采用十六進制插入數據的SQL語句:
declare @str varchar(100) set @str=0x3C7363726970743E616C65727428313233293C2F7363726970743E update tb_product set proName=proName+@str where proID = 54
以上SQL語句都可以執行,執行過后都是在proname字段的后頭加上<script>alert(123)</script>
0x3C7363726970743E616C65727428313233293C2F7363726970743E是怎么來的呢?0x是十六進制的開頭前綴,后面一大亂字母才是<script>alert(123)</script>,我們可用些可以查看十六進制的文本編輯器來轉換,如UltraEdit等,如圖:

把中間的那些字母間的空格去掉就可以了!!!
我在做該項目的時候插入數據時我沒把相應的HTML代碼去掉,只是在取出的時候把HTML代碼去掉了。不過只限于論壇,唉,還得把頁面所有的輸出全都要把HTML代碼去掉才行。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
