弱口令、子域名、md5、伪随机数、目录爆破与CTF实战
<h1 id="web-21弱口令爆破custom-iterator">web 21——弱口令爆破&custom iterator</h1><p>进去要求输入账号密码,账号输入<code>admin</code>,一般来说管理员用户名都会是这个,密码随便输,然后burpsuite抓包<br>
可以看到账号密码在<code>Authorization</code>传输,形式是<code>账号:密码</code>的base64加密,把他发到<code>Intruder</code>模块<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113816304-932647657.png" alt="" loading="lazy"></p>
<p>模式选<code>sniper</code>,因为要对整个账号密码字符进行加密,不能分开爆破,选中要爆破的地方<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113825970-1562893618.png" alt="" loading="lazy"></p>
<p>选择<code>custom iterator</code>模式,在位置1写入<code>admin</code>,分隔符写<code>:</code><br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113834355-1091395205.png" alt="" loading="lazy"></p>
<p>位置2导入提供的字典<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113844462-123291829.png" alt="" loading="lazy"></p>
<p>添加<code>base64</code>加密,取消选中Palyload Encoding编码,因为在进行base64加密的时候在最后可能存在<code>==</code>这样就会影响base64加密的结果<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113855468-1538000359.png" alt="" loading="lazy"></p>
<p>开始攻击,点击状态码进行筛选,找到爆破出的密码,将密码解密后为<code>shark63</code>,输入即可得到flag<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113904253-1110203478.png" alt="" loading="lazy"></p>
<h1 id="web-22子域名爆破oneforall">web 22——子域名爆破&oneforall</h1>
<p>OneForAll,是 shmilylty 在 Github 上开源的子域收集工具,可以实现对子域名的爆破</p>
<pre><code class="language-python">python oneforall.py --target ctf.show run
</code></pre>
<p>可以看到爆破出了很多结果,不过这题的域名失效了,不然应该会有一个<code>flag.ctf.show</code><br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113916199-748155656.png" alt="" loading="lazy"></p>
<h1 id="web-23md5爆破burppython">web 23——md5爆破&burp&python</h1>
<p>看一下代码,通过<code>get</code>方式提交一个<code>token</code>参数,要求MD5 加密结果的第 2 位、第 15 位、第 18 位字符是否相等,且这三位字符的数字之和除以第 2 位字符的值是否等于第 32 位字符的数字值<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113925276-2132953638.png" alt="" loading="lazy"></p>
<h2 id="方法1burpsuite爆破">方法1——burpsuite爆破</h2>
<p>不管他到底什么条件,直接burpsuite爆破数字0-500,发现422的时候返回长度不同,422就是满足条件的<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113934971-1136915404.png" alt="" loading="lazy"></p>
<h2 id="方法2python脚本爆破">方法2——python脚本爆破</h2>
<p>通过遍历二字符的字符串,寻找符合条件的字符串,得到两个可用字符串<code>3j</code>和<code>ZE</code></p>
<pre><code class="language-python">import hashlib
dic = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for a in dic:
for b in dic:
t = str(a) + str(b)
md5 = hashlib.md5(t.encode('utf-8')).hexdigest()
if md5 == md5 == md5:# 确保这些位置的字符相同
# 确保这些字符是数字
if 48 <= ord(md5) <= 57 and 48 <= ord(md5) <= 57 and 48 <= ord(md5) <= 57:
# 确保md5也是数字,并符合数学关系
if 48 <= ord(md5) <= 57:
num1 = int(md5)
num14 = int(md5)
num17 = int(md5)
num31 = int(md5)
# 判断除数是否为零
if num1 == 0:
continue# 跳过当前循环
if (num1 + num14 + num17) / num1 == num31:
print(t)
</code></pre>
<h1 id="web-24初探伪随机数">web 24——初探伪随机数</h1>
<p>本题考察的是php伪随机数,通过<code>mt_srand(1);</code>播种后,再通过同一随机数算法计算出来的随机数值是固定的,因此只要看一下服务器php版本,然后在本地起一下以下代码就可以得到随机数了,各位师傅也可以尝试刷新,会发现每次给出来的值都是同一个。</p>
<pre><code class="language-php"><?php
mt_srand(372619038);
echo "随机数:".mt_rand();
?>
</code></pre>
<h1 id="web-25伪随机数种子爆破">web 25——伪随机数&种子爆破</h1>
<p>要获得flag,必须输入<code>token</code>为第二、三个随机数的和,因此必须知道<code>seed</code>是什么<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113949462-1991742148.png" alt="" loading="lazy"></p>
<p>传入<code>?r=0</code>就可以获得第一个随机数的负值,为<code>-449307572</code><br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108113957718-2107036936.png" alt="" loading="lazy"></p>
<p>接下来就要爆破<code>seed</code>,这里我们使用php_mt_seed工具,下载与使用方法请自行百度。可以看到爆出来很多<code>seed</code>,由于php版本不同产生的随机数会略有区别,因此需要选择与服务器php版本对应的<code>seed</code><br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114006620-1470542238.png" alt="" loading="lazy"></p>
<p>看一眼php版本,选择1103714832,这里可能得几个都试试,博主试了后两个都没出来<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114014092-1091150398.png" alt="" loading="lazy"></p>
<p>写个php脚本输出需要的随机数</p>
<pre><code class="language-php"><?php
mt_srand(1103714832);
echo mt_rand()."\n";
$result = mt_rand()+mt_rand();
echo $result;
?>
</code></pre>
<p>提交<code>r</code>和<code>token</code>,得到flag<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114030825-1882774395.png" alt="" loading="lazy"></p>
<h1 id="web-26数据库密码爆破">web 26——数据库密码爆破</h1>
<p>本题还是弱口令爆破,就是换到了系统安装的场景,直接对密码进行数字的爆破即可,答案是7758521,爆破的量还挺大的<br>
另外这题的代码逻辑有点问题,什么都不填点安装然后抓包就会发现flag直接在返回包里了,不过这样就没有爆破的味道了,还是建议按上面的方法爆一下</p>
<h1 id="web-27门户网站爆破">web 27——门户网站爆破</h1>
<p>看到一个登陆界面,但是现在啥信息都没有,肯定不能直接爆破,看到下面有录取名单和学籍信息查询系统<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114040150-1563795398.png" alt="" loading="lazy"></p>
<p>看到这里,猜测是爆破身份证号(这里是生日被隐藏了),然后通过录取查询获得密码<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114049853-232850871.png" alt="" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114056961-890412650.png" alt="" loading="lazy"></p>
<p>抓包,这题很奇怪,火狐好像很难抓到包,要么用谷歌抓,或者用火狐一直点,总归能抓到。给对生日进行爆破,payload类型选日期,选择开始与结束的年月日,选择日期格式,y代表年,M代表月,d代表日<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114104696-675749659.png" alt="" loading="lazy"></p>
<p>找到长度不同的数据包<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114112651-458691386.png" alt="" loading="lazy"></p>
<p>返回信息需要Unicode解码一下,结果给出学号和密码,登陆得到flag</p>
<pre><code class="language-python"># 原始字符串
encoded_str = r"\u606d\u559c\u60a8\uff0c\u60a8\u5df2\u88ab\u6211\u6821\u5f55\u53d6\uff0c\u4f60\u7684\u5b66\u53f7\u4e3a02015237 \u521d\u59cb\u5bc6\u7801\u4e3a\u8eab\u4efd\u8bc1\u53f7\u7801"
# 使用 unicode_escape 解码
decoded_str = encoded_str.encode('utf-8').decode('unicode_escape')
print(decoded_str)
</code></pre>
<h1 id="web-28目录爆破">web 28——目录爆破</h1>
<p>看到url是<code>/0/1/2.txt</code>,猜测是对目录中的数字进行爆破,删掉2.txt,对<code>0</code>和<code>1</code>爆破,用<code>cluster bomb</code>模式<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114125415-1967526917.png" alt="" loading="lazy"></p>
<p>设置payload set 1和2都为数字0-99<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114133439-1873570921.png" alt="" loading="lazy"></p>
<p>爆破,找到能访问的目录,看一眼返回包就是flag<br>
<img src="https://img2024.cnblogs.com/blog/3510591/202411/3510591-20241108114141710-1365061871.png" alt="" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/xinghaihe/p/18534784
頁:
[1]