Web入门-(web21-28)
一、web21----custom iterator(自定义迭代器)(base64解码)
题目
看题可猜测可能是要爆破账户名密码,抓包试试。
好像是base64加密,将其解密。
解密后可得到账户密码传输的格式
账户:密码
那么爆破就有一定思路了。打开bp,使用bp构造payload爆破,对需要爆破的地方进行标记。
按之前的格式进行设置
position 1,2,3,第三部分记得导入常见的弱口令字典
加入base64加密,关闭URL编码,开始爆破。
结束后查看length最小的回包,即可得到flag,(由于时间过长就不做演示了)
二、web22----子域名
题目
由题可知,这是子域名爆破。
在线找一个查找子域名的工具子域名查询网站
然后可在vip.ctf.show源码可见flag。
三、web23----substr()函数(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__);} ?>
通过简单的阅读代码可知,我们以get传参方式传入token值需要满足两个条件。
一,MD5加密后的要使第二位,第十五位和第十八位相同。(下标从0开始)
二,第二位+第十五位+第十八位/第二位=第三十二位;
在这里直接用脚本
cv其他大佬的python脚本
import hashlib dic = "0123456789qazwsxedcrfvtgbyhnujmikolp" for a in dic: for b in dic: t = str(a)+str(b) md5 = hashlib.md5(t.encode(encoding='utf-8')).hexdigest() if md5[1:2] == md5[14:15] and md5[14:15] == md5[17:18]: if int(md5[1:2])+int(md5[14:15])+int(md5[17:18])/int(md5[1:2])==int(md5[31:32]): print(t)
python脚本跑出来如图
看其他大佬还有人使用PHP脚本
PHP脚本如下,可以去试试。
<?php for($v1=0;$v1<10;$v1++) for($v2=0;$v2<10;$v2++) for($v3=0;$v3<10;$v3++){ $v=$v1.$v2.$v3; $token = md5($v); 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 $v; } } } ?>
这个题个人认为需要掌握其他的小知识点
1.PHP函数substr()
测试一下以上函数(最好自己手敲加深印象)
四、web24----mt_srand(seed)
这个题主要涉及的就是PHP生成随机数
1.mt_srand()和mt_rand()函数(下题详细讲)
2.intval函数
五、web25----mt_rand(),cookies
题目
阅读代码可知,如果我们使r=0;可以得到mt_rand()第一次产生的数字,以此来反推种子。再使r=mt_rand()第一次产生的数字,可进入下面的语句。
即已进入下面语句。
使用反推种子的脚本
即这一页面
然后把脚本放入Kali中跑。在执行以下命令时先执行make命令,不报错后在执行以下命令。
然后进行这一代码,算出值。get传参传入原来rand()的值,然后抓包修改cookie,改成token的值为计算后的值,提交即可得到flag。
1.php中rand()函数和mt_rand()函数
看菜鸟教程中的解释。
六、web26----弱口令
题目
抓个包试试
直接bp,即可得到flag
七、web27----出生日期
信息收集一下其它相关信息可发现有名单
发现这表单中缺少年月日,那用bp继续爆破生日
爆破得到完整的身份信息,登录后可得flag
八、web28----目录
题目
这个目录有点怪怪的,去掉2.txt,直接试试爆破这一目录
爆破payload设置