mysql - sql報(bào)錯(cuò)原因?
問題描述
發(fā)現(xiàn)一個(gè)正在維護(hù)的老系統(tǒng)的基于orderBy的sql注入漏洞,準(zhǔn)備驗(yàn)證一下,
我先執(zhí)行這個(gè)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
但是當(dāng)我執(zhí)行這個(gè)帶update語句的sql時(shí)報(bào)錯(cuò)了:
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
報(bào)錯(cuò)
<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>
我應(yīng)該如何讓他執(zhí)行update?
問題解答
回答1:主體是select的時(shí)候,里面是不能update的,否則執(zhí)行不了的,mybatis這種注入我試過,<select>里執(zhí)行update直接報(bào)錯(cuò),注入不了
相關(guān)文章:
1. mysql優(yōu)化 - mysql count(id)查詢速度如何優(yōu)化?2. angular.js - 不適用其他構(gòu)建工具,怎么搭建angular1項(xiàng)目3. mysql主從 - 請(qǐng)教下mysql 主動(dòng)-被動(dòng)模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?4. python - django 里自定義的 login 方法,如何使用 login_required()5. 主從備份 - 跪求mysql 高可用主從方案6. java8中,邏輯與 & 符號(hào)用在接口類上代表什么意思7. python如何不改動(dòng)文件的情況下修改文件的 修改日期8. angular.js - angular-ui-bootstrap 報(bào)錯(cuò)無法使用?9. node.js - node_moduls太多了10. python - 關(guān)于ACK標(biāo)志位的TCP端口掃描的疑惑?
