首页 > 其他分享 >web入门(二)

web入门(二)

时间:2022-11-18 08:33:05浏览次数:77  
标签:脚本 web 爆破 入门 res 随机数 php string

现在我们进入到了爆破模块的学习

目录

web21

进入网站,提示要登陆,妥爆破
抓包
img
注意到最下行的base64编码
发现就是刚刚输入的账号密码
img
因此这里就是要选择爆破的地方了
发给inruder,添加爆破位
img
载入题目给的字典,并且添加爆破的规则
img

img

web22

img

web23

代码审计

<?php
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__);

}
?>

题目很简单,只要能满足以上条件即可输出flag
但是仍需要一定的编写代码能力
ctf里,能够用工具解决的都是简单题,所以编写代码的能力是很重要的,希望大家别做脚本小子,多亲自写写,相信一定会有不同的感悟和提升
这里我给出两种方法

python脚本

import requests
import string
strings=string.ascii_lowercase+string.digits
for i in strings:
    for j in strings:
        url = "http://08945b13-a3f3-425d-a7c5-ae238e8ec15a.challenge.ctf.show/?token="+str(i)+str(j)
        res = requests.get(url=url)
        if 'ctf' in res.text:
            print(res.text)
            exit()

这种方法比较慢,但更简单更容易理解,推荐新手使用

php脚本

<?php
error_reporting(0);

$a="qwertyuiopasdfghjklzxcvbnm0123456789";
for($i=0;$i<36;$i++){
    for($j=0;$j<36;$j++){
        $token=$a[$i].$a[$j];
        $token = md5($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))){
                print $a[$i].$a[$j];
                exit(0);
            }
        }
    }
}
?>

这个脚本优点是速度更快,但需要一定的php基础
以上两种方式都是可以的

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_strand()函数:
img
即生成随机数
其实说是随机数,但并不是真正的随机,这里其实生成的是伪随机数
如何理解?
首先我们要知道,计算机不能产生绝对的随机数,只能产生伪随机数。伪就是有规律的意思。伪随机数就是说计算机产生的随机数是有规律的。那么计算机是怎么产生随机数的?当然是通过算法,这个算法是有映射关系的,如我放进1234,他会出来一个特定的数。
而系统实现随机数是把当前的系统时间放进去,每次时间都不一样,所以可以实现每次出来的数都不一样。如果你每次都放进一样的种子,生成的随机数列就是一样的了。
也就是说,你在不同的电脑上输入同样的种子(比如1234),输出的随机数是一致的
也就是说这道题里产生的随机数其实是固定的
自己电脑上生成一下
img
这里还要注意一个细节,你所使用的php版本要和服务器的一样,生成的伪随机数才能一致
img

web25

源码

<?php
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');
} 
?>

审计,种子没有明确给出,但是需要种子才能继续推进,因此需要对种子进行爆破
img
看到这里,get一个r=0的值,则得到的rand为伪随机一次的相反数
img
爆破seed,由php的版本,选取7.1以上的进行尝试
尝试可能的seed即可
img

web26

对数据库密码进行爆破
img

web27

进入靶场,页面是登陆系统,可以下载附件查看相关考生信息
身份证号不全,需要完整身份证号进行查询,因此对身份证号爆破
img
unicode转中文
img
登陆得到flag:
img

web28

对目录进行爆破
img
两个位置均设置好爆破规则即可
img

标签:脚本,web,爆破,入门,res,随机数,php,string
From: https://www.cnblogs.com/perfectcqf/p/16829713.html

相关文章

  • websocket
    由于http协议无状态,一次请求,一次响应。无法保持持续的连接,而websocket协议可以创建连接持久连续不断的连接,基于这个连接,可以持续收发数据。常用场景:web聊天室实时监控平台,......
  • C++20实践入门 第6版 电子书 pdf
    关注公众号,回复【电子书】即可:  ......
  • 【书籍分享】Java 从入门到精通 第5版 明日科技 高清文字版pdf 下载
    自取:https://url03.ctfile.com/f/24333903-727283519-6e30ef?p=5831【访问密码:5831】,进入下载页面,选择【普通下载】......
  • Nuxt 3.0 稳定版正式发布,基于 Vue 3 的 Web 框架
    Nuxt是使用简便的Web框架,用于构建现代和高性能的Web应用,可以部署在任何运行JavaScript的平台上。Nuxt3.0今天正式发布了稳定版,3.0基于Vue3,为TypeScript......
  • Nunjucks模板入门
    概述安装nunjucks代码实现server.jsconstKoa=require("koa");//引入koa构造函数constapp=newKoa();//创建应用constviews=require("koa-views");//引入k......
  • Verilog语法入门
    VerilogHDL是一种硬件描述语言(HDL:HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑......
  • WEB安全基础
    0x001HTML简介什么是HTML?HTML是用来描述网页的一种语言。HTML指的是超文本标记语言:HyperTextMarkupLanguageHTML不是一种编程语言,而是一种标记语言标记语......
  • WEB安全DIV+CSS基础
    0x001DIV+CSS介绍层叠样式表(英文全称:CascadingStyleSheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机......
  • python基础入门之黏包、UDP代码、多道技术、进程
    python基础入门之黏包、UDP代码、多道技术、进程目录python基础入门之黏包、UDP代码、多道技术、进程黏包现象黏包的解决方案UDP基本代码使用并发编程理论之操作系统发展......
  • 攻防世界web 难度1新手练习
    unseping<?phphighlight_file(__FILE__);classease{private$method;private$args; //构造函数,实例化的时候先调用这里,初始化两个参数function......