題目地址:https://buuoj.cn/challenges#[SUCTF%202019]EasySQL

SQL查詢,觀察回顯,這里應該是用var_dump()輸出

在測驗查詢的時候發現有些字符能使用,有些字符被過濾了,因此查詢點進行fuzz測驗,看看過濾了哪些字符

回包長度為523的都是可以使用的,其他的字符均已被過濾
PS:這里使用Burp進行fuzz的執行緒不要開太高,容易報429,fuzz的字符不多可以慢慢跑
;可以使用,嘗試堆疊注入


首先這里的query引數無論我們輸入數字什么都只會回顯Array([0]= > 1),輸入字母不會顯,但是也沒顯示是過濾的,所以query的值如果為非數字則無法正確查詢得到資料回顯,那么查詢陳述句就應該長這樣
$sql = "select ".$post['query']."||flag from Flag";

知道查詢陳述句了就好做了,先看一個非預期解
非預期解
||在SQL陳述句中表示或,在查詢表中的欄位內容時,逗號,用于查詢多個欄位名


payload
*,1

預期解
通過修改SQL配置將或運算子||設定為連接符
set sql_mode=PIPES_AS_CONCAT;

payload
1;set sql_mode=PIPES_AS_CONCAT;select 1
這樣拼接得到的陳述句就應該是
select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/161905.html
標籤:其他
