ThinkPHP框架网站取证
ThinkPHP框架基础
参考手册:https://www.thinkphp.cn/doc
网站启动方式
内置服务器--在根目录下运行php think run,此时网站自动会将public目录当做对外窗口
外置服务器(不需要输入任何启动命令依靠集成软件启动网站)
目录结构
tp6及以上版本
tp5
tp3.2,低版本一个很大的不同就是对外访问目录public没有,Public文件存放的是资源文件
MVC架构
网站应用所采用的架构模式
M:model(模型)
V:view(视图)
C:controller(控制器)
网站日志
一般存放在Runtime目录(应用运行时产生的文件)下的log文件夹中
服务器取证
服务器基本信息
类似于渗透测试中的信息收集,关于服务器的基本信息,有操作系统版本、时区、用户信息、日志文件等等
重构网站
1、寻找有无类似宝塔之类的网站管理工具,如果有可以大大降低重构难度
2、用浏览器访问网站,这里特别注意,我们访问网站时最好使用域名而不是服务器ip地址,因为一个web服务器上可能存在多个网站(这个好比数据库服务器,一台服务器上有一个MySQL服务,服务中可以架设好几个数据库,而一个网站一般只会用到一个数据库),对后续取证不利
可以先在本地的hosts文件中添加ip和域名的映射关系,使浏览器可以访问到web页面
3、登录后台管理页面
这步是网站重构的关键
1、寻找后台登录页面地址(这里确实需要一定的经验积累)
利用web后台目录扫描器,获得一些网站后台目录地址,可以尝试
login、admin、signin等标志性字段很有可能是后台登录页面地址
寻找web访问日志文件(宝塔面板的web日志存放在www/wwwlogs目录下),根据POST请求方法和响应状态200过滤数据
2、在数据库中寻找用户表
MySQL数据库中有general_log日志功能,开启后会记录所有的SQL语句情况
开启方式,我们找到网站后台进行任意用户的输入,再去查看日志情况,帮助我们快速找到用户表
3、破解用户密码
网站后台登录代码逻辑
利用vscode编辑器的搜索功能,可以快速定为至后台用户登录的代码页面
想要登录网页后台的根本条件是输入的用户名和密码与数据库中的数据一致
从三个方面考虑:
一是输入的字符去与数据库的数据匹配,可以查询数据库,一般是密文,我们试着解密后利用密码登录
二是考虑修改数据库的数据,我们将自己输入的数据地md5覆盖至数据中,利用自己的密码登录,实质起到一个修改密码的作用
这里可以使用打印字符串的方式进行密码绕过或者直接看代码逻辑,将自己的密码加密后覆盖数据库数据
三是修改controller即后台代码逻辑,后台代码逻辑是数据库和前端输入的一个桥梁,只要把控制器的逻辑进行更改,即可实现任意密码登录
这里把密码相等的逻辑改为了不等,即可实现万能密码登录!
__EOF__

本文链接:https://www.cnblogs.com/zyToJH/p/18004596.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效