ctfshow web89-web98(php特性篇)
web89
漏洞来自于preg_match()和inval()函数,preg_match函数只匹配字符串,intval函数遇到空数组返回0,非空数组则返回1!
web90
这里intval的第二个参数base是0,所以intval可以通过检测value的格式来决定使用的格式,这里我们用16进制绕过即可!
好像还可以直接?num=4476afas这是因为我们输入的参数值默认是字符串类型!
web91
这里的特性主要是正则的修饰符/m,没有这歌修饰符就是^和$就会老老实实的匹配开头和结尾,有了之后就会识别行的出现,即在每个换行符前或后开始匹配,说白了就是多行模式!
所以payload:?cmd=%0aphp
web92
科学计数法绕过,当然也可以17=6进制绕过,因为第二个参数仍然是0
web93
同样是web90出现的漏洞,这里过滤了字母,我们用8进制即可,这告诉我们不要局限于一般情况!4476的8进制是10574然后再在前面添0即可!
web94
直接小数点即可,%20010574也可以!
web95
小数不行了,这里你会发现阻止我们使用8进制的就是strpos这个函数,我们在前面加一个+或者空格都是不影响后面的操作的!
web96
这里要highlight_file的文件就是flag.php但是又不能直接flag.php,这里我使用的是绝对路径!还有一种打法就是使用当前目录即./flag.php
web97
md5的强比较这里可以用数组绕过,机制是因为md遇到数值返回null,但是这里我想用md5的碰撞,这里我积累过一对可以打的碰撞!
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
这里用火狐的hackbar打不了原因是火狐的hackbar的机制会对你上传的东西进行一次编码也就导致如果我上传的是已经编码了的数据就会再次编码导致不行!
web98
这题纯考一个php的三目运算。
$_GET?$_GET=&$_POST:'flag'//意思就是如果get传参就指向post的传参
其他同理!我们的目的就是$_GET['HTTP_FLAG']=='flag'构造这个,然后你会发现中间那两个都是关于flag参数的,直接不用管。所以我们先get随便上传一个参数,然后再post上传HTTP_FLAG=flag即可!