web入门 爆破

文章目录

  • web21
  • web22
  • web23
  • web24
  • web25
  • web26
  • web27
  • web28

web21

题目是个登录框
web入门 爆破_第1张图片

附件里面有一个爆破密码
在这里插入图片描述
应该是就用这个爆破了

抓个数据包先
web入门 爆破_第2张图片

web入门 爆破_第3张图片

这里的用户名和密码是通过:连接,然后base64加密的

第一个放admin
web入门 爆破_第4张图片

第二个放:
web入门 爆破_第5张图片
第三个放下载的密码包

web入门 爆破_第6张图片

然后还需要进行加密
web入门 爆破_第7张图片
web入门 爆破_第8张图片

开始爆破,得到成功登录的信息

哦,设置错了……,应该是encode

web入门 爆破_第9张图片

……经过了漫长的等待,谁知道竟然把密码放在最后面几百个里面
web入门 爆破_第10张图片

web22

“域名也可以爆破的,试试爆破这个ctf.show的子域名”

找工具爆破了半个小时,啥也没出来,看了下hint气死

web入门 爆破_第11张图片

果然这个子域名失效了……

web23


error_reporting(0);

include('flag.php');
if(isset($_GET['token'])){
    $token = md5($_GET['token']);
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
        if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
            echo $flag;
        }
    }
}else{
    highlight_file(__FILE__);

}
?>

intval — 获取变量的整数值
substr — 返回字符串的子串

应该是要求token的md5值的,第二位、第十五位和第十八位相等。还限制,三者的和除以第二位的值,等于第三十二位的值。

三者的和除以第二位,三者相等,等于任何一位的值,除以任一位的商应为3,即第三十二位的整数值应该是3

需要求一个md5值,当作token传值过去

import hashlib
a = "0123456789qwertyuiopasdfghjklzxcvbnm"
for i in a:
    for j in a:
        b = (str(i) + str(j)).encode("utf-8")
        m = hashlib.md5(b).hexdigest()
        if(m[1:2] == m[14:15] and m[14:15] == m[17:18]):
            if ((int(m[1:2]) + int(m[14:15]) + int(m[17:18])) / int(m[1:2])) == int(m[31:32]):
                print('原字符串为:',b)
                print('加密后字符串为:',m)

跑出来的结果为,3j
加密后的值为,f12882fc7cde8e1ba1cadec10e3e9393

满足题目限制
在这里插入图片描述

web24



error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(372619038);
    if(intval($r)===intval(mt_rand())){
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

?>

mt_rand() 使用 Mersenne Twister 算法返回随机整数。

mt_srand() 播种 Mersenne Twister 随机数生成器。

当随机数的种子是个确定值时(如本题),mt_rand()所得到的随机数也是确定的,所以运行后发现mt_rand()=1155388967,传参r=1155388967即可
web入门 爆破_第12张图片

web25



error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));
    $rand = intval($r)-intval(mt_rand());
    if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }
    }else{
        echo $rand;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

分析代码可以发现,先令r=0,可以得到mt_rand()的随机值 2119447047
web入门 爆破_第13张图片

得到mt_rand()的值后,需要推算种子seed的值,利用工具
web入门 爆破_第14张图片
然后计算mt_rand()的第二、三次的随机值之和。php在线工具
web入门 爆破_第15张图片
这里的第一个值与r=0的值相等,所有后面就是第二三个随机值的和

令r为mt_rand()的值,令cookie为token=第二、三个随机值的和
(不行就试试后面的seed的值、这是最后一个才有flag的)
web入门 爆破_第16张图片

web26

打开后是个安装的界面
web入门 爆破_第17张图片

web入门 爆破_第18张图片
web入门 爆破_第19张图片

然后就没有了,根据题目说可以爆破,那有可能是爆破安装的这个密码,用到web21题给的字典库
web入门 爆破_第20张图片
web入门 爆破_第21张图片
等好久,终于等到了个不同length的响应

这个题还有一种非预期解 https://oatmeal.vip/writeup/ctfshow/ctfshow-web/

web27

是个教务系统登录,有录取名单和学籍查询
web入门 爆破_第22张图片
录取名单:
web入门 爆破_第23张图片
学籍查询:
web入门 爆破_第24张图片

猜测应该是用录取名单的姓名+身份证号登录,查询录取信息
在登陆查询页面查看源代码
web入门 爆破_第25张图片
hackbar工具POST提交
web入门 爆破_第26张图片

web入门 爆破_第27张图片
web入门 爆破_第28张图片

设置好日期范围,开始爆破
web入门 爆破_第29张图片
成功爆破,返回的是unicode编码后的,解码一下
web入门 爆破_第30张图片

得到学号和密码,去刚开始的教务系统登录
web入门 爆破_第31张图片

web28

web入门 爆破_第32张图片
看到这地址之后,应该是去爆破目录
web入门 爆破_第33张图片

payload1和2一样设置,从0到100
web入门 爆破_第34张图片

开始爆破
web入门 爆破_第35张图片

终于在两千多次后成功了

你可能感兴趣的:(ctfshow,从0开始学web,安全笔记,安全,web安全,系统安全)