首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python | 7招教你识别一个网站是否是Django后台

  • 24-03-04 23:20
  • 4730
  • 10924
blog.csdn.net

戳蓝字“CSDN云计算”关注我们哦!

作者 l 上海小胖   

来源 l Python专栏(ID:xpchuiit)

转载请联系授权(微信ID:pythonzhuanlan)


640?wx_fmt=jpeg


目录:

1. 利用Debug模式异常页面判断
2. 通过CSRF Token验证
3. Django Admin

4. 通过HTTP头
5. 拼凑细节
6. 通过一些第三方模块的特点判断
7. 分析静态文件


最近事情有点多,一直没有时间写原创,而又一直想写点什么,今天早上正好空下来,我就来写一篇Python的吧,这周末我总结下最近遇到的事情和以后的打算,和大家共勉。


平时开发们用Django写网站,你作为黑盒测试来说可能不需要关心以下的问题,但白盒呢?所以黑盒不想提升一下自己的能力吗?

今天我们就来说下,如何测试一个网站的后端是由Django编写的。


1. 利用Debug模式异常页面判断


最简单的就是,当DEBUG模式开启时,访问不存在的页面或出错的页面会有特殊的异常抛出。像这样的页面,我称之为黄代码(哈哈哈,写Django的自己知道,是不是经常会有),就可以确定是Django了

640?wx_fmt=png


2. 通过CSRF Token验证


访问一个包含表单的页面,表单中会有一个hidden input,用来存储CSRF检测的Token,其名字比较独特,csrfmiddlewaretoken:

640?wx_fmt=png

遇到有这个名字的表单,基本可以确定是Django。


假如开发者将 csrfmiddlewaretoken 这个名字换了,怎么办?

我们可以把刚刚的hidden input 给删了,然后登陆,因为缺少CSRF TOKEN,会返回一个Django的CSRF TOKEN错误页面给你:

640?wx_fmt=png


3. Django Admin


安装Django的时候会自带一个后台,地址是/admin(不过大多数网站会替换后台地址):

640?wx_fmt=png

遇到这个样式的后台界面,可以确定是Django。


4. 通过HTTP头


有的Django站点会返回Server头:

640?wx_fmt=png

虽然通过这种方式不能100%确定是Django后台,但范围就缩的很小了,是个Python,也就那几套Web了。


5. 拼凑细节


比如,Django默认找回密码的链接是 /password_reset/ ,邮件发送成功是 /password_reset/done/ ,找回密码链接是 reset/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/ ,找回密码成功是 /reset/done/ ,正常修改密码是 /password_change/ ,修改成功是 /password_change/done/ 。


不过这些链接都可以改,只能用作参考。


再比如,django文件上传的目录通常叫 media ,注册时密码要求8位以上数字加字母,分页通常是 ?page=2 而不会是 /page/2/ ,表单输入框的id通常是 id_xxxx ,中文的情况下还会有一些特定的翻译语句,如 请上传一张有效的图片。您所上传的文件不是图片或者是已损坏的图片。 、 CSRF验证失败. 相应中断. 等。


6. 通过一些第三方模块的特点判断


Django之所以好用,因为其代码耦合性很低,所以有丰富的第三方模块可以直接使用。通过这些模块的特点也能判断目标网站是否是Django。

常用的第三方模块有django-rest-framework、django-debug-toolbar、django-bootstrap3、django-filter、django-cron、django-allauth、django-simple-captcha等。

比如,django-rest-framework会有一个调试页面:

640?wx_fmt=png

再比如,django-simple-captcha生成的验证码会包含一个名字是 captcha_0 ,值为40位hex的隐藏输入框。

这些第三方库的特点也可以辅助你判断,就是需要收集与细心观察了。


7. 分析静态文件


有的网站可能修改了Django的后台地址,但Django后台所使用的静态文件地址通常没有修改,也较难修改。

访问这些静态文件地址,看看内容是否是Django的这一套,就可以确定目标是否为Django,如 :http://0.0.0.0:8001/static/admin/css/dashboard.css

640?wx_fmt=png

但这个方法有个局限,如果目标网站没有使用Django自带的django-admin(未将其包含在settings.py的INSTALLED_APPS中),就没有这个静态文件了。


本文来源:公众号 @Python专栏,作者上海小胖,四大咨询TechLead,mongoDB Professional 获得者。「Python专栏」专注Python领域的各种技术:爬虫、DevOps、人工智能、Web开发等。还有「大航海计划」,各种内推活动。


1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:[email protected];微信号:color_ld。请备注投稿+姓名+公司职位。


推荐阅读

  • 这样学算法,包会包懂so easy~

  • 20k~50k,“寒冬季”一线城市技术人才依旧紧缺,千里马,赶紧来投!

  • 20张图表达程序员的心酸

  • Python 爬取爱奇艺腾讯视频 250,000 条数据分析为什么李诞不值得了?

  • 这位 50 岁的海归程序员,当着老板还在天天改 Bug

  • 人工智能凉凉了?中国 AI 人才缺口高达 12113 个!

  • 可替代Android的6大开源移动操作系统

640?wx_fmt=jpeg

↓点击“阅读原文”,打开APP 阅读更顺畅

注:本文转载自blog.csdn.net的CSDN云计算的文章"https://blog.csdn.net/FL63Zv9Zou86950w/article/details/85059001"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top