首页 > 其他分享 >Web入门

Web入门

时间:2023-12-24 10:44:09浏览次数:45  
标签:Web 入门 show int res ctf 穷举 md5

爆破

一、ctf.show web21 穷举--base64解码登录

  1. 使用BP抓包如下图所示,
  2. 发送到拦截器里
  3. 标记
  4. 选择Payloads,Payloads类型选择自定义迭代
  5. 该变红框的值进行多次值设置,本次需要进行三次设置,分别为 账号 冒号 密码
  6. Position为1 导入字典
  7. Position选择2写入:

    8.Position选择3导入字典

    9.选择规则

    10.去掉Payload encoding

    11.开始穷举

    12.发送到Decoder,进行解码,得到账号密码

二、ctf.show web23穷举

题目

<?php
error_reporting(0);

include('flag.php');
if(isset($_GET['token'])){
    $token = md5($_GET['token']);	//将一个数使用md5加密
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){ //第2位、第15位,第18位相等
        if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){	//(第2位+第15位+第18位)/第2位 == 等32位
            echo $flag;
        }
    }
}else{
    highlight_file(__FILE__);

}
?>
### 解析:

(1) python脚本跑出来

# 将一个数使用md5加密之后,它的第2位、第15位,第18位相等
# 将(第2位+第15位+第18位)/第2位 == 等32位
import hashlib
import string
characters = string.digits + string.ascii_letters
#  + string.punctuation
def is_int(s):
    try:
        int(s)
        return True
    except ValueError:
        return False
    
for i in characters:
    for j in characters:
        res = str(i)+str(j)
        md5_res = hashlib.md5(res.encode('utf-8')).hexdigest()
        if is_int(md5_res[1:2]) and is_int(md5_res[14:15]) and is_int(md5_res[17:18]) and is_int(md5_res[31:32]):
            if md5_res[1:2]==md5_res[14:15] and md5_res[14:15]==md5_res[17:18] and int(md5_res[1:2])!=0:
                if(int(md5_res[1:2])+int(md5_res[14:15])+int(md5_res[17:18]))/int(md5_res[1:2])==int(md5_res[31:32]):
                    print(md5_res + '======>' + md5_res[1:2]+'========>'+md5_res[14:15]+'======>'+md5_res[17:18]+'=======>'+md5_res[31:32])
                    print(res)

(2) 使用BP进行爆破

  1. 使用BP进行抓包

  2. 选择Brute forcer模式

  3. 进行爆破,得到结果

三、ctf.show web24穷举

题目

<?php
error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(372619038);			//设置随机种子为:372619038
    if(intval($r)===intval(mt_rand())){	//如果get(r)的值为mt_rand()则输出flag
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

?>

解题

  1. 环境可使用菜鸟教程的PHP编译环境
<?php
    mt_srand(372619038);
    echo mt_rand();
?>

四、ctf.show web25穷举

题目

<?php
error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));	//将flag的前8个字母作为随机种子
    $rand = intval($r)-intval(mt_rand());	//如果get到的r = 0 rand=-mt_rand()
    if((!$rand)){	
        if($_COOKIE['token']==(mt_rand()+mt_rand())){	//将'token'=第2个随机数+第3个随机数
            echo $flag;
        }
    }else{
        echo $rand;		//r=0 输出 第一个随机数
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

题解

(1)根据r = 0,可以输出第一个随机数

(2)由第一个随机数,可以由php_mt_seed4.0得到随机种子是多少

(3)获取该随机种子的第二个、第三个随机数进行相加得到token

4.1 php_mt_seed4.0在kali使用

1. 通过 https://www.openwall.com/php_mt_seed/ 进行下载
2. tar -zxvf php_mt_seed-4.0.tar.gz 
3. make                          进行编译
4. ./php_mt_seed  1647299849 


对上面的数一个一个试

<?php
mt_srand(3592921990);
echo mt_rand()."\n";
echo mt_rand()+mt_rand();
?>

将r的值与token的值都进行替换,得到答案

五、ctf.show web26穷举

直接抓包

六、ctf.show web27穷举

  1. 点击录取名单 点击学生学籍信息查询系统
  2. 打开录取名单,进行年月日的爆破



七、ctf.show web28穷举

删除2.txt,对前面的0与1进行穷举。

标签:Web,入门,show,int,res,ctf,穷举,md5
From: https://www.cnblogs.com/xrwcm/p/17924152.html

相关文章

  • WebMvcConfigurerAdapter
    WebMvcConfigurerAdapter 是SpringBoot1.x版本中用于自定义SpringMVC配置的一个类。但在SpringBoot2.x之后,这个类已经被标记为废弃,并推荐使用 WebMvcConfigurer 接口来替代。WebMvcConfigurerAdapter 提供了默认的实现,使得你可以在无需扩展 WebMvcConfigurer 接口......
  • WPF MvvmToolkit入门
    最新.net6wpfMVVMToolkit8.0工程搭建。MVVMToolkit是一个轻量级MVVM框架,在框架下我们第一个要做的就是搞清在此框架下的一些常规操作:属性绑定和通知,命令绑定,消息传递。搞懂这些处理流程,然后就可以写自己业务的逻辑。1.安装mvvmtoolkit1.1Nuget下载CommunityToolkit.Mvvm......
  • Swagger(一) Swagger/Springfox 入门简介
    转载自:https://blog.csdn.net/donglinjob/article/details/108550636 Swagger/Springfox入门简介一、Swagger 简介1前言接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经......
  • Stable_diffusion入门学习
    前言最近升级了一下电脑的显卡,搞了个4060ti16g的,于是乎终于可以玩玩一直想玩的AI绘画了。简单学习了一下入门教程,了解了一下基本的情况,于是选择秋葉大佬的启动器学习。但是要画出好看的绘画,还是需要借助于许多其他工具来优化和修复绘画的图形。接下来我将一一记录我在学习过程......
  • 青少年CTF-qsnctf-Web-include01&include02(多种方法-知识点较多-建议收藏!)
    PHP常见伪协议php://filter是PHP中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理,rot13处理等。官方解释为:php://filter是一种元封装器,设计用于数据流打开时......
  • 16 json web token的基本介绍
    jwt全拼是jsonwebtoken。就是服务端给客户端一个加密的字符串。这个字符串中包含了一些信息,比如用户信息等。浏览器每次访问服务端时候,会携带这个字符串。然后服务的获取这个字符串后,通过解密,就可以获取携带的信息,比如用户信息等。这个加密的字符串,包含3部分内容,就是头部+负载+......
  • 解决Electron中WebView加载部分HTTPS页面白屏的方法
    Electron是一个开源的桌面应用程序框架,它允许使用Web技术构建跨平台的桌面应用。在Electron应用中,WebView是一个常用的组件,用于嵌套加载Web内容。然而,有时候在加载使用HTTPS协议的页面时,可能会因为证书问题导致白屏现象。问题描述:当WebView尝试加载某些HTTPS页面时,如果页面的......
  • golang快速入门:并发编程(一)
    进程、线程和协程进程:是操作系统中的一个执行实体,它拥有独立的内存空间和系统资源。每个进程都是独立运行的,它们之间相互隔离,通过进程间通信(IPC)来进行数据交换。每个进程都有自己的地址空间、堆栈和文件描述符等。进程之间的切换开销较大,因为需要保存和恢复整个进程的状态。线程:是......
  • [C++从入门到精通] 2.inline内联函数、const的相关用法
    作者:丶布布文章预览:一、返回类型二、内联函数inline三、函数杂合用法总结四、constchar*、charconst*、char*const三者的区别五、函数形参中带const一、返回类型前置类型:在函数声明和定义的时候,把函数返回类型写到函数名字之前的形式,叫前置返回类型voidfunc(inta);//函数......
  • [C++从入门到精通] 3.string类型的相关用法
    作者:丶布布文章预览:一.C++基本变量类型二.String对象的定义和初始化三.String对象的操作一.C++基本变量类型基本类型:int、double等。复合类型:引用、指针、const等。标准库类型:string(可变长字符串的处理)、vector(一种集合或容器的概念)、迭代器。对于字符串,在现实生活中,string......