gpt4 book ai didi

php - 模拟XSS攻击

转载 作者:行者123 更新时间:2023-11-28 09:04:56 26 4
gpt4 key购买 nike

我试图模拟浏览器(并模拟 XSS)。有人向我推荐了 PhantomJS,但是,我在执行简单的 JS 命令时遇到了一些问题。

我创建了简单的 php 网站:xss.php

<form id = "myform"  action="xss.php" method="POST">
<input id="x" name='x' type="text" />
<input type="submit" value="ok" />
</form>
<?php
echo $_POST['x'];
$fp = fopen("logs.txt", "a");
fwrite($fp, $_POST['x']);
fclose($fp);
?>
<script>document.getElementById('x').value='payload';
document.getElementById('myform').submit();</script>

当我从浏览器运行它时,会发送表单(并将其结果放入logs.txt中。但是,在尝试通过 PhantomJS 运行该网站时出现问题:

运行.js:

var page = require('webpage').create();
var url = 'http://127.0.0.1/xss/xss.php';
page.open(url, function (status) {
if (status !== 'success') console.log('Network error');
else
{
var p = page.evaluate(function () {
});
console.log('DONE');

}
phantom.exit();
});

我通过命令行运行它:./phantomjs run.js据我了解,该脚本应该模拟浏览器行为并发送上述表单。然而,logs.txt 中没有任何内容,这意味着 phantomjs 没有运行该脚本。你能告诉我我做错了什么吗?

最佳答案

您的脚本使浏览器陷入无限循环,重新加载页面 xss.php。这会将“有效负载”一词放入logs.txt中,直到您停止JavaScript执行。

如果你想模拟表单提交,你必须显式发送POST数据到php脚本:

var page = require('webpage').create();
var url = 'http://127.0.0.1/xss/xss.php';
var data = 'x=phantom';
page.open(url, 'post', data, function (status) {
if (status !== 'success') console.log('Network error');
else
{
console.log('DONE');
}
phantom.exit();
});

这会将 POST 数据提供给 xss.php,并将“phantom”一词附加到 messages.txt。但请注意,与浏览器不同,PhantomJS 不会进入永恒循环,并且只会发送一次请求。

关于php - 模拟XSS攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com