【问题标题】:Submitting data to a website with POST使用 POST 向网站提交数据
【发布时间】:2014-04-20 07:24:29
【问题描述】:

我正在使用一个使用简单验证码的网站,我希望尝试将数据提交到验证码的输入字段,然后查看响应是什么。最终,我计划尝试看看我是否可以进行 Padding Oracle 攻击。在对网站的来源进行了一些挖掘之后,我相当确定我需要处理的表格中的行是:

<input type="text" name="login_captcha" size="12" maxlength="6" />&nbsp; &nbsp;  </p>

所以我在 StackOverflow 上进行了一些挖掘以了解如何做到这一点,到目前为止我已经做到了:

Send = "The data I want to submit"
url = 'www.website.com'
values = {'login_captcha' : Send}

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

但它似乎不起作用。到目前为止,我读到的所有内容似乎都在说这是这样做的方法,但它似乎没有做任何事情。这里有什么不正常的地方吗?

【问题讨论】:

  • python 部分似乎没问题。您很可能在其他地方遇到了问题。尝试使用 Wireshark 或 tcpdump 记录请求,我确定 python 将其作为 POST 请求发送。

标签: python html forms post


【解决方案1】:

我尝试了只更改 URL 和参数的代码,以便在生产系统中对其进行测试,并且 ti 可以正常工作。 您应该检查 url 是否正确,因为这只是一个域。另外,请检查服务器上的脚本是否可以读取/应答 POST 方法发送的请求。

【讨论】:

  • 您对 URL 的看法是正确的!我需要将请求发送到表单中“操作”的 URL。我通过返回源并右键单击-> 获取操作上的链接位置来得到它。相反,我试图将表单发送到对我没有任何作用的主页。非常感谢!
【解决方案2】:

首先 - 您要提交表单,因此请验证您的网址。 有问题的似乎是域的 url,而不是形式的 url(动作参数)

secend 可选 - 您的网站可以检测到您的代码不是浏览器, 但你可以欺骗它 - 只需设置用户代理、引荐来源网址或有时设置 cookie

第三:使用 curl 等工具自行调试。

上面的代码是正确的。但要记住编码(url和数据)。

【讨论】:

  • 当你说记住编码时......我曾使用 base64.b64decode(STUFF) 以便从网站中获得我想要的值,使其处于可工作状态。我假设我必须为要传递到表单中的数据发送 = base64.b64encode(Send),对吗?还是您在谈论编码的其他部分?
【解决方案3】:

你说的没用是什么意思?这甚至不在我的Python 2.7 中运行

url = 'www.website.com'

所以在你的网址添加http://,它应该可以工作。

url = 'http://www.website.com'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多