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