web21
ctfshow【从0开始学web】系列21-28 爆破_ctfshow web 28_yyyyzzzllll的博客-CSDN博客
参考
web22
页面失效下一题
web23
知道了代码,通过代码的意思我们可以逆向得知答案是3j
<?php
error_reporting(0);
$a="qwertyuiopasdfghjklzxcvbnm0123456789";
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);
}
}
}
}
?>
通过便利36个字符,取两个然后判断他们的md5值是不是满足
$a含有36个字符
一直循环
a里面的$token=$a[$i].$a[$j];
字符,符合条件的话取出来
web24
给了源码
<?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');
}
?>
get传入r 这个参数经过伪随机数种子生成的数
mt_srand(seed)这个函数的意思,是通过分发seed种子,然后种子有了后
靠mt_rand()生成随机 数。
提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数 因此不需要播种,并且如果设置了 seed参数 生成的随机数就是伪随机数,意思就是每次生成的随机数 是一样的
php脚本跑一下:
<?php
mt_srand(372619038);
echo(mt_rand());
?>
r=1155388967
web25
if((!$rand)){
: 如果 $rand
的值为零(意味着 $r
与 mt_rand()
生成的值相等),执行下面的代码块。
0=假
1=真
-1=真
假取反为真
真取反为假
只取反真假
PHP中,逻辑非运算符 !
只关注表达式是否为真或假。它不对具体的数值进行取反,而是对表达式的真假值进行取反。
对于逻辑非运算,以下规则适用:
- 如果表达式的值为
true
,则!
会将其取反为false
。 - 如果表达式的值为
false
,则!
会将其取反为true
。
这和具体的数值,如 -1 或 1,无关。只有真和假的布尔值才会被取反。例如,!(-1)
会被解释为 false
,而 !(1)
会被解释为 false
,因为 !
操作符只关注真和假的布尔值。
下载php_mt_seed-PHP mt_rand()种子破解程序https://www.openwall.com/php_mt_seed/
用这个跑,我没跑,懒
web26
抓包再发就可以了,val值都为空,但参数需要有
web27
爆破- -
然后得到Unicode编码
转换一下,登入后就有flag了
web28
集束炸弹 clusterbomb的方式去测试,因为集束炸弹是遍历所有的可能性
/0/0/ 把2.txt去掉