Open PyxYuYu opened 7 years ago
bug
产生原因已经明白
Google
上查询得知 img
标签 src
为空会导致重复两次请求页面的问题base.html
代码,通篇没有 img
标签,但是在 head
内的 CSS
代码内查看存在如下
.navbar-brand {
background: url('') no-repeat 10px 8px;
display: inline-block;
vertical-align: middle;
padding-left: 50px;
color: #fff;
}
background: url('') no-repeat 10px 8px;
这句是显示背景图片,类似于 img
标签, url('')
即等同 src
为空,所以导致重复两次请求的产生.navbar-brand
这个 class
(类选择器) 就属于响应式导航栏内标签 a
bug
只需要删除 background
这一行,或者将图片导入至静态文件夹内引入地址即可Url
后, Url
是被保存至 UrlList
数据表,未被保存至 SqlInjection
数据表,所以点击 submit
后直接跳转至 scan
页面不会显示新增的 Url
,只有先点击 task
页面刷新任务,在转到 scan
页面才可以显示出新的 Url
sql_tasks
视图函数中关于选取 UrlList
数据表内的 Url
导入至 SqlInjection
数据表中代码段复制一份写在 sql_scan
视图函数内即可
# UrlList 所有对象
url_lists = UrlList.objects.all()
# 每个UrlList对象
for each_list in url_lists:
# 每个UrlList对象中的所有urls
urls = each_list.target_urls
# 进行字符串分割,生成一个列表,前端输入数据是以换行回车进行分隔
url_list = urls.split('\r\n')
for each_url in url_list:
dic_url = {'target_url': each_url}
# 进行对比,确保不会有重复Url导入,如果SqlInjection数据表中没有,则增加至其中
if dic_url not in SqlInjection.objects.values("target_url"):
# print SqlInjection.objects.values("target_url")
SqlInjection.objects.create(target_url=each_url)
# url_list 被导入至 SqlInjection 数据表中,即 each_list 这个对象全被导入,删除 UrlList 中的 each_list 对象
each_list.delete()
0x01 DSScan
views.py
视图函数sql_tasks
视图函数用于显示所有扫描任务SqlInjection
数据表中target_url
都从UrlList
数据表中获取UrlList
数据表(即UrlList
数据表中只保存每次导入的一组Url
,如果这组Url
被SqlInjection
获取,则删除此Url
),否则未删除的话,如果在SqlInjection
数据表中进行删除操作会导致删除不成功,因为UrlList
中的Url
未删除,又会被重新导入SqlInjection.objects.values("target_url")
返回以字典为元素的一列数据(target_url
这一列)的列表SqlInjection.objects.values_list('target_url')
返回以元组为元素的一列数据的列表url_search
视图函数用于导航栏上的搜索功能forms.py
中新增input
标签的name
值base.html
内GET
方式提交搜索即可action="{% url 'search' %}"
search
是urls.py
中urlpatterns
中正则匹配后的name
属性GET
提交,input
中name
属性名(即forms.py
中定义的属性名)会被附加在search/
后即search/?query=
search/?query=
等号后面带的就是表单中输入的数据form.cleaned_data
form.cleaned_data
获取的是字典,键值即query
form.cleaned_data['query']
SqlInjection
数据表中的target_url
对比,利用__contains
SqlInjection.objects.filter(target_url__contains=form.cleaned_data['query'])
if
来判断是否GET
提交,因为最后面render
的渲染需要,每个else
中要声明render
渲染中的数据(即带入至模板文件中调用的变量)sql_scan
视图函数用于选取任务进而启动扫描checkbox
复选框SqlmapApi
中进行扫描,也做了一个利用复选框进行数据库中删除的功能,所以此处的表单用了POST
方式,POST
方式的表单需要在html
中添加csrf_token
forms.py
中进行定义,因为此处的表单只做判断是否打勾选取,无需输入数据以及获取其中的数据base.html
中)request.POST.getlist('checkbox')
(checkbox
是name
属性名)sqls.py
调用SqlmapApi
进行扫描request.POST.get('btn')
(两个按钮前端name
一样即可,获取的是按钮的value
)scan_config
视图函数用于保存扫描配置ScanConfig
数据模型用于保存forms.py
内声明url
至UrlList
数据表中类似templates
模板文件base.html
中有个bug
目前任未解决IE
浏览器,其他浏览器中运行项目,GET
请求都会重复发生两次bug
才可以解决0x02 Life
bug
即可,平时运行Scan
时网页会有一点卡,等待完成即可