mysql - sql報錯原因?
問題描述
發現一個正在維護的老系統的基于orderBy的sql注入漏洞,準備驗證一下,
我先執行這個sql注入,是可以的
SELECT sysitem_item.item_id FROM sysitem_item `sysitem_item` ORDER BY (selectcasewhen(1=1)then1else(select depositfrom sysuser_user_deposit)end)=1 ASC LIMIT 20 OFFSET 0
但是當我執行這個帶update語句的sql時報錯了:
SELECT sysitem_item.item_id FROM sysitem_item `sysitem_item` ORDER BY (selectcasewhen(1=1)then1else(updatesysuser_user_depositsetdeposit=11)end)=1 ASC LIMIT 20 OFFSET 0
報錯
<code>#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’update<br>sysuser_user_deposit<br>set<br>deposit=11)end)=1 ASC LIMIT 20 OFFSET 0’ at line 9</code>
我應該如何讓他執行update?
問題解答
回答1:主體是select的時候,里面是不能update的,否則執行不了的,mybatis這種注入我試過,<select>里執行update直接報錯,注入不了
相關文章:
1. javascript - 數組原聲方法中的一段代碼2. html - eclipse 標簽錯誤3. 求大神幫我看看是哪里寫錯了 感謝細心解答4. php自學從哪里開始?5. javascript - 怎么實現移動端頁面滑動切換,從1可以滑到2 但是不能從2滑回1 這樣的效果呢?6. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...7. 數據庫 - MySQL 單表500W+數據,查詢超時,如何優化呢?8. mysql多表查詢9. phpstady在win10上運行10. javascript - 如果所有請求都放到actions 里面,那拿到的數據應該 放在哪里,state 還是vue實例里面的data?
