欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CTF_web01对方不想和你说话,并向你扔了一段代码

程序员文章站 2022-03-04 19:44:40
...

CTF_web01对方不想和你说话,并向你扔了一段代码
分析这段代码
首先了解每个函数的功能和用法!


函数Extract:
定义和用法
extract() 函数从数组中将变量导入到当前的符号表。

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

该函数返回成功设置的变量数目。

语法
extract(array,extract_rules,prefix)

参数 描述

array 必需。规定要使用的数组。

extract_rules 可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。对不合法和冲突的键名的处理将根据此参数决定。

prefix 可选。该参数规定了前缀。前缀和数组键名之间会自动加上一个下划线。
CTF_web01对方不想和你说话,并向你扔了一段代码


CTF_web01对方不想和你说话,并向你扔了一段代码
再看下面的代码
isset() 函数用于检测变量是否已设置并且非 NULL。
If判断,$a的值,发现整个代码中没有出现$a,所以我们可以get提交一个a=111,这个时候就有$a了,并且$a=111 ,再继续,就可以进入到if语句中了,又遇到了一个

$c=trim(file_get_comtents($b))

trim() 函数移除字符串两侧的空白字符或其他预定义字符。
CTF_web01对方不想和你说话,并向你扔了一段代码
trim(string,charlist)

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
“\0” - NULL
“\t” - 制表符
“\n” - 换行
“\x0B” - 垂直制表符
“\r” - 回车
" " - 空格
file_get_contents() 函数
file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

其中file_get_contemts($b)就是吧$b的值给读取到里面了,然后再用trim函数处理,trim函数的用法是删除指定的字符,然后trim后面什么都没有指定,所以导致全部给删了。

我有疑问,看函数的定义和用法,未指定参数,不是只删除了那些特殊的字符吗?为什么为全部删除。

最后得到$c=’’,什么都没有,所以这里我们就可以构造参数获取flag了,成功获取

构造:url ?a=
CTF_web01对方不想和你说话,并向你扔了一段代码

相关标签: ctf