CTFSHOW-爆破

发布于 2022-12-13  399 次阅读


一些知识

bp区域爆破阻止整体编码

  • 爆破时可能出现以下情况:网页把账户名和密码整合起来admin:password发送,并且对字符串整体使用了编码,假如已知用户名,只需要爆破密码,如果只截取部分的发送字符串就会破坏整体的编码
  • 此时就要用到bp的custom iterator
  • position选择字符串拼接,如1为admin:,2为password,则爆破字符串为admin:password
  • 然后直接添加编码方式即可,编码会对整体进行编码

子域名爆破

  • 有点像dirsearch,不过这个针对的多级域名
  • 网址http://z.zcjun.com/

php随机数

mt_srand() 为mt_rand函数获取一个种子
mt_rand() 凭借mt_srand()函数的种子生成一个随机数

下面测试一些这俩函数的特性
  • 如果种子是一样的,生成的随机数就是一样的
<?php
mt_srand(2);
for($a=1;$a<=10;$a++)
echo(mt_rand()%10);
?> 

连续运行两次,结果都是4302991705

<?php
mt_srand(2);
for($a=1;$a<=10;$a++)
echo(mt_rand()%10);
?> 

运行得到2924165096 
  • 如果不写种子函数,会生成随机数
<?php
//mt_srand(1);
for($a=1;$a<=10000;$a++)
echo(mt_rand());
?> 

运行n多次得到的数都不同,未出现循环

php反推种子

  • 如果种子是确定的,那么php_mt_seed脚本可以通过生成的随机数推出种子
./php_mt_seed 生成的随机数

wp

web21-base64

  • 只能猜本题是base64加密了,因为没有base64特征=存在
  • 用上面提到的custom iterator爆破即可,position1为admin:,possition2为题目提供的字典,整体base64编码
  • 注意要把url编码去掉,不然==可能被编码从而出问题

web23-md5

  • 直接把代码复制下来改一下
<?php
for($v1=0;$v1<1000;$v1++)
{
    $token = md5($v1);
    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 $v1;
        }
    }
}
?>
  • 成功爆破出来422的md5值满足题目
  • 如果没爆破出来就要加入字符串进行爆破了或者把爆破的范围再加大一些爆破到100000之类的

web24-mt_srand(seed)

  • 利用上面提到的特性,可以构造
<?php
mt_srand(372619038); 

echo(mt_rand());
?> 

得到1155388967 
  • 传入r=1155388967 即可

web25-反推种子()

  • 观察这句,如果让r=0,就可以得到mt_rand()在种子确定时的值
$rand = intval($r)-intval(mt_rand()); 
  • 凭借https://www.openwall.com/php_mt_seed/提供的脚本可以由随机数推出种子
  • 传入r=0,得到-1668411774
  • ./php_mt_seed 1668411774得到734219057

web26-常规爆破

  • 有四个数据需要爆破,又得猜前三个数据都是正确的,只有密码是错误的
  • 密码也没提供字典,还得猜全是数字才能爆,直接看答案,密码是7758521

web27-常规爆破(有问题)

web28-目录爆破

  • 奇怪的题目,奇怪的数字
  • 去掉2.txt,爆破目录的两个数字即可,爆破得到/72/20目录下面有flag
届ける言葉を今は育ててる
最后更新于 2024-02-07