如何使用 Jsoup 将 "Security : low" 作为 cookie 参数发送到 DVWA?
How to send "Security : low" to DVWA as cookie parameter using Jsoup?
我正在尝试使用带有手动插入 cookie 的 jsoup 发送请求,目的是检测 SQL 注入漏洞。
问题似乎是只有一个 cookie 有效,我不明白为什么。
我首先手动验证自己并获取 cookie。示例:
PHPSESSID : b74302c3c6af62d23047a450a40cbf5a
security : high
获得 cookie 后,我使用相同的 PHPSESSID 但 安全性:低。目的是强制发出 SQL 注入漏洞信号的 "You have an error in your SQL syntax" 响应。问题是 PHPSESSID 接收良好(因为我检索了 dvwa/vulnerabilities/sqli 页面而不是登录页面,因此它在身份验证后将 PHPSESSID 识别为有效)但 "security : low" 似乎不起作用。我找不到问题。
用于初始连接的 jsoup 代码如下所示,以便我可以解析页面上的表单。我手动提供饼干。
Connection connection = Jsoup.connect(urlDTO.getUrl())
.userAgent(StringConstants.USER_AGENT)
.cookies(cookies)//Map<String,String>
.referrer(StringConstants.REFERRER);
Document htmlDocument = connection.get();
为了发送表格,我使用了这个代码:
Connection connection = Jsoup.connect(formDTO.getUrl())
.userAgent(StringConstants.USER_AGENT)
.cookies(cookies)
.data(listToMap(formDTO.getInputList()))// id = ' , Submit = Submit
.method(getMethod(formDTO.getMethod()))
.referrer(StringConstants.REFERRER);
Connection.Response res = connection.execute();
Document doc = res.parse();
有人知道我做错了什么吗?
经过多次调试,我找到了问题的根源和奇怪的行为。 cookies/headers/url没有问题,问题出在.method()
。 .method()
的默认值为 Method.GET
。但是由于我正在发送动态请求,所以我也必须动态构建它。为此,我正在解析表单以获取方法,然后在连接构造中添加所需的类型。
if (method.equals("post")) {
return Method.POST;
}
if (method.equals("get")) {
return Method.GET;
}
return Method.POST;
这一直有效到现在,令人惊讶的是,当发送错误的方法时,它仍然发送了一个几乎有效的响应,所以我忽略了它。
这是解决方法。
if (method.toLowerCase().equals("post")) {
return Method.POST;
}
if (method.toLowerCase().equals("get")) {
return Method.GET;
}
return Method.GET;
这是我的错误,没有传达 Jsoup 问题,但由于我忽略了它,其他人可能也会忽略它,所以这里提醒一下。
我正在尝试使用带有手动插入 cookie 的 jsoup 发送请求,目的是检测 SQL 注入漏洞。 问题似乎是只有一个 cookie 有效,我不明白为什么。 我首先手动验证自己并获取 cookie。示例:
PHPSESSID : b74302c3c6af62d23047a450a40cbf5a
security : high
获得 cookie 后,我使用相同的 PHPSESSID 但 安全性:低。目的是强制发出 SQL 注入漏洞信号的 "You have an error in your SQL syntax" 响应。问题是 PHPSESSID 接收良好(因为我检索了 dvwa/vulnerabilities/sqli 页面而不是登录页面,因此它在身份验证后将 PHPSESSID 识别为有效)但 "security : low" 似乎不起作用。我找不到问题。
用于初始连接的 jsoup 代码如下所示,以便我可以解析页面上的表单。我手动提供饼干。
Connection connection = Jsoup.connect(urlDTO.getUrl())
.userAgent(StringConstants.USER_AGENT)
.cookies(cookies)//Map<String,String>
.referrer(StringConstants.REFERRER);
Document htmlDocument = connection.get();
为了发送表格,我使用了这个代码:
Connection connection = Jsoup.connect(formDTO.getUrl())
.userAgent(StringConstants.USER_AGENT)
.cookies(cookies)
.data(listToMap(formDTO.getInputList()))// id = ' , Submit = Submit
.method(getMethod(formDTO.getMethod()))
.referrer(StringConstants.REFERRER);
Connection.Response res = connection.execute();
Document doc = res.parse();
有人知道我做错了什么吗?
经过多次调试,我找到了问题的根源和奇怪的行为。 cookies/headers/url没有问题,问题出在.method()
。 .method()
的默认值为 Method.GET
。但是由于我正在发送动态请求,所以我也必须动态构建它。为此,我正在解析表单以获取方法,然后在连接构造中添加所需的类型。
if (method.equals("post")) {
return Method.POST;
}
if (method.equals("get")) {
return Method.GET;
}
return Method.POST;
这一直有效到现在,令人惊讶的是,当发送错误的方法时,它仍然发送了一个几乎有效的响应,所以我忽略了它。
这是解决方法。
if (method.toLowerCase().equals("post")) {
return Method.POST;
}
if (method.toLowerCase().equals("get")) {
return Method.GET;
}
return Method.GET;
这是我的错误,没有传达 Jsoup 问题,但由于我忽略了它,其他人可能也会忽略它,所以这里提醒一下。