实验环境:zd靶场、vscode
知识点
requests.session()
首先我们需要先利用python requests模块
进行登录,然后利用开启session记录,保持之后的操作处于同一会话当中
requests.session()
用于创建一个会话(session)的实例对象。使用requests
库发送多个HTTP请求时,可以通过创建一个会话对象,使得接下来的访问中都保持在同一个会话中。
所以我们需要在访问zd靶场之前,先申明开启session会话
需要注意的是:在之后的发包过程中我们就不能使用requests.post
而是使用session.post
进行访问,它表示在创建的session下用post发起登录请求
url
也算一个需要注意的地方,我们可以看到在zd靶场中登录界面访问的文件是login.php
,并且通过开发者工具我们也可以查看到对应字段的参数名称
但是当前访问的login.php
只是作为一个html表单,它并不会对输入的数据进行处理,而是会跳转到logCheck.php
对其进行处理,所以我们请求的url应该为logCheck.php
同样的在留言界面我们也需要访问messageSub.php
,对于这两个页面,如果不熟悉html表单代码的话就只能看源码了,比如说我
主要是我们需要知道他们处理的参数是什么
实践
需要的知识点就这么多,首先咱们可以在本地上留言测试一下,先删去所有评论
import requests
session = requests.session()
url = "http://localhost:81/zd/user/logCheck.php"
data = {
'user':'123123',
'pass':'123',
'submit':'submit'
}
zd_login = session.post(url, data = data )
print(zd_login.status_code)
url_1 = "http://localhost:81/zd/messageSub.php"
data_1 = {
'message':'asdasdadasd',
'username':'123123',
'submit':'submit'
}
zd_message = session.post(url_1, data = data_1)
if zd_message.status_code == 200:
print(zd_message.text)
运行代码后直接刷新就可以看到,出现了一个新的留言,所以我们这时候就只需要更改注入信息,就可以实现xss漏洞