ctfshow web题记

Web 89

知识点:

1. isset() 函数可以检测「变量是否存在」并非NULL。常用来判断变量是否被定义,以避免变量未定义而报错。变量「存在」返回 true ,变量「不存在」返回 false

2.intval() 函数可以获取变量的「整数值」。常用于强制类型转换。

语法:

int intval( $var, $base )

当 base 为空时,默认值是 0,会根据 $var 的格式来调整转换的进制。

  • 如果 $var 以 0 开头,就使用 8进制
  • 如果 $var 以0x开头,就使用 16进制
  • 否则,就使用 10进制

intval() 转换数组类型时,不关心数组中的内容,只判断数组中有没有元素。

  • 「空数组」返回 0
  • 「非空数组」返回 1

利用数组绕过

​ 其他人的解题思路

 Web 90

这个比较用的是强比较,会先判断两种字符串的类型是否相等,再比较值是否相等,后面的函数可参考上一题的用法,只不过这一题里面的base为0,可以用八进制或者十六进制绕过

 还可以用下面的方法,因为4476a会被识别为4476

Web 91

知识点 :

  • ^php$ 是一个正则表达式,其中:
    • ^ 表示字符串的开始。
    • php 是要匹配的字符序列。
    • $ 表示字符串的结束。
  • im 是修饰符,其中:
    • i 表示不区分大小写。
    • m 表示多行模式,这样 ^$ 将分别匹配每一行的开始和结束。

 构造payload:

?cmd=1%0aphp

Apache HTTPD换行解析漏洞(CVE-2017-15715)

 

 Web 92

和Web 90差不多,但是这个题是弱比较,大差不差,利用进制绕过

 Web 93

比前面多了个正则匹配,过滤了字母,用八进制,构造payload:

?num=010574

Web 94

知识点:

strpos函数是查找某个字符在字符串中的位置;这里需要明确这个函数的作用;

这个函数得到的是位置;如果存在,返回数字;否则返回的是false;

传送门

这道题目如果我们可以用八进制的4476来绕过,那么会有一个问题,因为八进制需要开头指定为0,而strpos()会匹配到数字0返回0,!0也就是1从而执行死亡函数,所以我们可以在八进制前面加一个空格,这样strpos()会返回1,所以我们把4476转换为8进制10574后,前面再加一个空格即可。构造payload:

?num= 010574

Web 95

过滤了字母和小数点,利用上一题的payload可以得到flag,过滤小数点是过滤了用小数点绕过弱比较的可能性,可以了解一下强弱比较的一般绕过手段

Web 96

只检测传入的u是不是flag.php,用大写试一下

出来了路径,可以加路径绕过

 Web 97

简单理解一下这段代码,就是传入的a和b不能相同但是a和b在md5加密后的数值得相同,可以了解一下md5绕过,这里我们尝试用数组绕过

 Web 98

知识点:? :在代码里有一种用法即

表达式1 ? 表达式2 : 表达式3

 其意思是:如果表达式1为真,则运算表达式2,整个条件表达式的值为 表达式2的值;反之,则运算表达式3,整个条件表达式的值为表达式3的值。

第一句代码就是说get一个参数后会转化为post方式,最后一句代码又要求我们get传入HTTP_FLAG参数并赋值为flag,所以最终只需要post为HTTP_FLAG=flag即可,get也得传值,否则第一句代码无法执行

Web 99

知识点:

  • array():创建一个数组
  • array_push():将一个或多个元素插入数组末尾(入栈)
  • in_array():检查数组中是否存在指定元素,第三个参数strict不指定默认为宽松比较
  • file_put_contents():将数据写入文件中,相当于fopen()+fwrite()+fclose()
  • rand():返回随机整数

因为不知道随机生成的数字,所以从1开始试一下,in_array第三个参数没设置为true,所以该函数是宽松比较(==),字符串型会先转化为整型再比较,只要值相同就可以了

访问1.php成功,即写入了1.php文件,内容为post传入的一句话,用蚁剑连接

Web 100

知识点:

is_numeric() 函数用于检测变量是否为数字或数字字符串。

PHP 版本要求:PHP 4, PHP 5, PHP 7

逻辑运算符的优先级:"&&" > "||" > "=" > "and",等号的优先级高于and,所以v0只跟v1有关系

var_dump()函数可以输出多个值

 我们不能直接输出字符串,应该输出$ctfshow的值,所以利用v2和v3的位置把给的这个括号注释掉

 0x2d的ascii码是-

Web680

提示post一个code参数来运行,试一下最原始的phpinfo();

 

禁用了一大堆,看其他博客说对open_basedir进行了限制

PHP的open_basedir是一个安全机制,用于限制在PHP脚本中可以打开的文件或目录的范围,从而防止访问非法或未授权的文件系统资源

scandir()函数返回指定目录中的文件和目录的数组。

var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并返回数据类型.此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

查看当前目录的文件

code=var_dump(scandir('.'));

 发现一个名为secret_you_never_know的文件,直接访问

在别的博客里面看到还可以用

code=highlight_file('secret_you_never_know');

 Web681

 看了半天除了白帽子就是绿帽子,还有一个好像登陆框的,遇到这种就习惯性的先bp抓一下,发现会返回一串sql语句

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

 sql语句这里也没学的咋好就看别人的解题步骤了,先用单引号闭合,发现没啥变化,然后用\,发现出现在了返回的语句中

看别人发的

理解了半天,应该就是\会把'给转义了,然后前面一部分都相当于一串字符一直连到后面的'123\'所以就相当于后面解释的'xxx'123\',那就只需要让后面的''里面的能执行应该就可以

还有一种做法又否定了我上面的理解,用dirsearch扫,发现是.svn泄漏,访问得到压缩包,解压后得到源码,代码审计后发现是将'过滤了,而\'是绕过'的一种方式

 hat不为green的时候输出flag,在check.php中str_replace("'", "", ...): 将字符串中的所有单引号替换为空字符串

看了这个有点懂了,因为将'过滤了所以我们需要用\'来代替',而要让这个语句永远为真则可以构造||1,后面的#也是为了注释掉最后面的\',将前面的语句闭合起来,这样就形成了'xxxx'||1,永为真

转载请说明出处内容投诉
CSS教程_站长资源网 » ctfshow web题记

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买