XVWA CSV Formula Injection

0x00 CSV Formula Injection

这个之前在玩其它的靶场的时候就已经接触过了,上次的时候由于代码问题,没有办法复现成功,这次又碰到了。其实就是利用excel来执行系统命令,越来越感觉hacker的无所不能,牛逼。

先看home.php

 if($conn){
     $stmt = $conn1->prepare("SELECT itemcode,itemname,categ,price from caffaine");                            
     $stmt->execute();
     echo "<table class='table table-striped'>";
     echo "<tr><th>Item Code</th><th>Item Name</th><th>Category</th><th>Price</th></tr>";                      
     while($rows=$stmt->fetch(PDO::FETCH_NUM)){
         echo "<tr>";
         echo "<td>".htmlspecialchars($rows[0])."</td>";
         echo "<td>".htmlspecialchars($rows[1])."</td>";
         echo "<td>".htmlspecialchars($rows[2])."</td>";
         echo "<td>$".htmlspecialchars($rows[3])."</td>";
         echo "</tr>";
     }
 }
 echo "</table>";

用的预处理PDO不存在注入点,再看导出文件export.php

<?php
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=xvwa-export.csv');

$output = fopen('php://output', 'w');

fputcsv($output, array('itemcode', 'itemname', 'categ','price'));

include('../../config.php');
$sql='SELECT itemcode,itemname,categ,price from caffaine';
$result = $conn->query($sql);

while ($row = mysqli_fetch_assoc($result)) fputcsv($output, $row);
?>

一样的,只是一个输出csv格式的php文件,也没看到有效输入信息。

也就是说,参数没有办法从这里添加,于是找找找找找,发现了这个。
在这里插入图片描述
这四个参数和上面的基本是一样的阿,于是上传了一波。
在这里插入图片描述
这里payload写在namecategory应该都可以的,此时观察表单信息。

在这里插入图片描述
下载CSV文件,并打开。
在这里插入图片描述
有安全提示,点启用,不然无法触发。
在这里插入图片描述
继续点(感觉真的只能去欺骗大爷大妈了。。。)
在这里插入图片描述
成功执行。。。


0x02 webug4.0 csv

回头再来看看webug4.0中的csv。。。
在这里插入图片描述
我去,把上传点给干掉了,难怪当时不知道在哪上传数据。。。

    <table id="table">
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Email</th>
        </tr>
        <?php

        if ($res) {

            while (list($id, $name, $age, $email, $deflag) = mysqli_fetch_row($res)){
                echo '<tr>';
                echo '<input type="text" hidden="hidden" name="id[]" value="'.$id.'">';
                echo '<td><div contenteditable="true">'.$name.'</div></td>';
                echo '<td><div contenteditable="true">'.$age.'</div></td>';
                echo  '<td><div contenteditable="true">'.$email.'</div></td>';
                echo '</tr>';
            }
        }
        ?>
    </table>
    <div>
        <button type="button" id="button">导出</button>
    </div>
</body>
<script src="../../../aa/html/table-to-excel.js"></script>
    <script>
        var tableToExcel = new TableToExcel();
        document.getElementById('button').onclick = function () {

            tableToExcel.render("table");

        };
        
    </script>

导出是通过javascript来完成的,由于点击没反应,所以我去查了下这个JS
在这里插入图片描述
原来这个功能是需要外部引入的,接着审查元素。。。
在这里插入图片描述
还真有一个,访问着看一下。
在这里插入图片描述
太惨了,没这个JS,难怪下载不下来。。。
在这里插入图片描述
找了下也没看到对应的名字,算了,不修复了,就这样吧,过去的就让他过去,感觉这几个月的代码水平比年前强多了啊,年前不知道怎么动手,现在感觉完全不是问题,还不错还不错,继续学习,继续加油。

发布了265 篇原创文章 · 获赞 266 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u014029795/article/details/105216180