web(95)
直接使用上一题的即可。【\. 表示. 因为.有代表的含义了所以使用转义符来转义下。】
web(96)【路径问题】
文件读取我们可以使用php伪协议来直接读取。或者使用./flag.php的形式来进行读取。
?u=/var/www/html/flag.php 绝对路径
?u=./flag.php 相对路径
web(97)【md5函数;isset函数】
isset()函数用于检测变量是否已设置并且非 NULL。
md5()函数计算字符串的MD5散列。
他需要a的值不等于b的值,但他们的散列要相等。因为php在面对开头为零哈希值时,会自动将其归为零,还有就是md5函数是无法计算数组的我们可以利用这一漏洞来构建,解决。a[ ]=1&b[ ]=2; post传参。
web(98)【三目运算符】
三目运算符和取地址,首先二三行是无用的,第一行的含义是存在get传参就将post覆盖get,我们可以利用这一点来进行解决,可以构建get传参?1=3,【随便构建一个】然后是post传参,它的为HTTP_FLAG=flag然后他就会输出flag。
三目运算符:
web(99)【in_array函数】
array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
rand()函数是Excel中产生随机数的一个随机函数。返回的随机数是大于等于 0 及小于 1 的均匀分布随机实数,rand()函数每次计算工作表时都将返回一个新的随机实数。
in_array函数功能 -- 检查数组中是否存在某个值。
file_put_contents() 函数把一个字符串写入文件中。
该函数访问文件时,遵循以下规则:
- 如果设置了 FILE_USE_INCLUDE_PATH,那么将检查 *filename* 副本的内置路径
- 如果文件不存在,将创建一个文件
- 打开文件
- 如果设置了 LOCK_EX,那么将锁定文件
- 如果设置了 FILE_APPEND,那么将移至文件末尾。否则,将会清除文件的内容
- 向文件中写入数据
- 关闭文件并对所有文件解锁
如果成功,该函数将返回写入文件中的字符数。如果失败,则返回 False。
脚本跑的,ctfshow-Web1000题系列修炼(一) | dota_st 其中
status_code==200表明请求成功。response.getStatusCode()==200什么意思_大西瓜不甜的博客-CSDN博客_statuscode200什么意思 相关注解。
这个相对简便。总的来说就是在36到840次数之间分别从一到三十六,一到三十七。。。。逐步递增加数。我们随便选择一个在其中范围内的数字来进行添加一句话,之后查找目录,得到flag所在之后,然后用post输出既可以。
Web(100)【优先级问题】
is_numeric — 检测变量是否为数字或数字字符串 ,为数字或字符串时返回为真。
这道题目的重点是运算符的优先级问题https://www.jb51.net/article/42425.htm 。
?v1=1&v2=system("tac ctfshow.php")&v3=;得到的flag中0x2d要替换成-。
Web(101)【反射类】
这里使用了反射类,PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
$class = new ReflectionClass(‘ctfshow’); // 建立 Person这个类的反射类
$instance = $class->newInstanceArgs($args); // 相当于实例化ctfshow类
我们构建?v1=1&v2=print new ReflectionClass&v3=;
Web(102)【call_user_func;file_put_contents】
call_user_func()函数 PHP函数详解:call_user_func()使用方法_风雅的远行者的博客-CSDN博客_call_user_func()
就是一种特别的调用方法。来调用函数。
file_put_contents()函数 php file_put_contents函数怎么用?-PHP问题-PHP中文网 写入文件。
首先我们要将一部分代码写入文件中但有代码可知我们要从v2中得到相关的代码,v2又需要是数字,所以我们要保证v2是数字,然后str是代码,可以先将v3使用伪协议用base64写入,所以这个时候的str是base64代码,call_user_func()函数为一个过度,hex2bin函数可以转换十六进制。V1要传入的是就是hex2bin函数,之后调用所以,v2应该是先base64然后是十六进制。
?v2=00504438395948526859794171594473&v3=php://filter/write=convert.base64-decode/resource=dotast.php
post:
v1=hex2bin
web(103)【】
这里多了一个正则匹配,不能出现php,,套用上一题目的方法就可以通过。
Web(104)【shal函数】
首先isset函数检测变量是否为空,为空返回flase,
shal函数加密类似md5
所以构建数组,他无法处理数组
?v2[ ]=
Post:
V1[ ]=
Web(105)【】