實驗吧_簡單的sql注入_1、2、3


簡單的sql注入1

看着這個簡單的界面,一時間沒有特別好的思路,先輸入一個1',發生了報錯

 

 

初步猜測這是一個字符型的注入,他將我們輸入的語句直接當成sql語句執行了,按題目的意思后面肯定過濾了很多注入語句,我就先來嘗試一些基本的語句

 

難道把union select都給過濾了?一陣絕望后接着試,試了好多后完全沒思路

接着大概就是傳說中的運氣吧

這兩個現象讓我猜測過濾的是兩個空格以及空格中間的字符串,繞過空格有好多方法:+,/**/,%0a,這里我用/**/代替空格構造一個查詢語句:

拿到數據庫,接下來就是常規的注入語句,具體可見之前寫的注入關

嘿嘿,你以為是常規語句就能解決的,怕不是活在夢里

經過一番測試,table_schema都被和諧了,這還怎么玩,突然想到之前有個字符串拼接的方法趕緊來試試

好像並沒有什么卵用,算了,去看wp吧。

后來發現原來要把limit以及后面的東西都給去掉,這個我實在是不知道原因,請知道的大佬招呼一聲。

出現了flag表,繼續注入

貌似column_name也被和諧了,確認之后確實是的,還是老方法繞過,發現還有東西被過濾,試了一試是information_schema.columns,再繞一次

flag就是我們想要的字段啊

太累了,但也學到了不少東西

 

 

 

 

簡單的sql注入之2

瞎試一通后發現還是過濾了空格嘛,同樣的手法還能連用兩題的啊,繼續深入

氣死了,database()被過濾了,那就查所有的數據庫

還是熟悉的配方,熟悉的web1,繼續走

 

又讓我找到了flag表,繼續

最后一步

跟上一題一模一樣,跟撿的一樣。

 

 

 

 

簡單的sql注入之3

一開始老套路先給個1'肯定是會報錯的

先拿個基於時間的盲注語句試試水

返回了一個don't,嘗試了語句中的每個指令,原來是sleep()被過濾了

突然想到了一開始看到的報錯信息,那就再試試報錯注入

又過濾了floor()函數,我就知道不會這么簡單

 經過1=1與1=2的對比,我猜測當后面的sql語句成功執行就會返回hello,否則就無回顯。

這就跟基於時間的盲注一個原理么。原理猜到了,但由於對數據庫命令並不熟,我還是去查看了wp。

原來這邊除了上面這點還要利用一下報錯:

?id=1' and (select count(*) from 表名)>0 %23

表名不存在時,報錯

由此我們得知數據庫名為web1,

接下里跑表的語句還是?id=1' and (select count(*) from 表名)>0 %23

這里因為我沒有表名字典,所以也沒啥可跑的,求表哥們賞我一份字典吧

只能簡單的拿?id=1' and (select count(*) from flag)>0 %23測試一下,返回了hello說明flag表存在

猜列的手法如出一轍

?id=1'union select 列名 from flag %23可以拿個字段字典放burp里跑,我這里還是進行簡單的測試

?id=1'union select flag from flag %23后返回了hello,說明存在flag列

接下來就是最重要的一步——猜字符

?id=1'and ascii(substr((select flag from flag),1,1))=ASCII%23原理就是這條語句

對ASCII碼進行爆破,值從30到127

這里貼上我參考過的大佬的wp

【實驗吧】CTF_Web_簡單的SQL注入之3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM