如何绕过登录界面进入网站
去年帮朋友处理一个内部测试站的何绕问题,他忘了后台密码,过登又不想重置数据库。录界我直接打开浏览器控制台,面进敲了一行 很多网站的入网登录界面只是“看起来”在拦人。你输入账号密码,何绕前端用 JavaScript 校验一下,过登对了就跳转,录界错了就弹窗。面进这种校验完全在浏览器里跑,入网你按 F12 打开开发者工具,找到对应的 JS 文件,把校验函数改成 更常见的是直接改 URL。有些网站把登录状态存在 URL 参数里,比如 Cookie 和 LocalStorage 是另一个突破口。登录成功后,服务器通常会给浏览器一个 session token,存在 Cookie 里。如果你能拿到别人的 token,或者猜出 token 的生成规律,就能伪造身份。我见过一个站点用 有些登录界面干脆是摆设。你点“登录”按钮,它不发送任何请求,只是用 JS 把当前页面的 HTTP 基本认证也能绕。有些网站弹出一个浏览器原生的用户名密码框,那是 401 响应触发的。你可以在 URL 里直接写 这些方法能生效,根子在于开发者把安全责任推给了前端。前端代码是公开的,用户能改,能删,能绕过。真正的登录验证必须在服务器端完成:每次请求都检查 session 是否有效、权限是否匹配、token 是否签名。我见过一个做得好的例子,某银行后台每次操作都带一个一次性 nonce,前端改任何东西都没用,因为服务器会重新计算签名。那才是正经做法。 如果你只是想进自己的测试站,上面这些够用了。如果是别人的站,别碰——绕过登录界面进入未授权区域,在国内属于非法侵入计算机信息系统,刑法第 285 条等着你。技术本身没善恶,用在哪才是关键。document.cookie = "session=xxx; path=/",入网刷新页面就进去了。何绕这不是过登什么黑客手段,只是录界前端登录校验的常见漏洞——服务器信任了客户端传来的身份标识,却没做二次验证。面进return true,或者直接删掉那个 if 判断,登录框就形同虚设。我见过一个政府部门的旧系统,登录逻辑写死在 login.js 第 47 行,把 if(password === "admin123") 改成 if(true) 就能进。当然,这只能骗过前端,如果后端也校验,那你进去也看不到数据。?logged_in=true 或者 ?user=admin。你手动把参数改一下,回车,页面就认为你已登录。我试过一个老论坛,它的管理后台地址是 /admin.php?auth=1,而普通用户访问 /admin.php 会被重定向到登录页。只要在地址栏补上 ?auth=1,直接进。这种设计现在少了,但内部系统、学校教务、小公司 OA 里依然能碰到。user_id=123 这种明文 Cookie,把 123 改成 124 就变成了另一个用户。更粗糙的,直接把 is_admin=false 改成 true。浏览器控制台里一行 document.cookie = "is_admin=true" 就搞定。服务器如果不重新校验这个值,你就成了管理员。display: none 去掉,露出下面的内容。这种叫“客户端隐藏式登录”,常见于早期单页应用或者演示站。你右键检查元素,找到那个被隐藏的 div,把 style="display:none" 删掉,内容就出来了。我遇到过一个在线考试系统,交卷后的答案解析就是这么藏的,改一下 CSS 就能提前看答案。http://admin:admin@example.com,浏览器会自动带上凭证。如果服务器只检查有没有 Authorization 头,不验证具体值,你甚至可以用 http://x:x@example.com 混进去。我试过一个路由器管理页,用户名填 admin,密码随便填,只要 Base64 编码后不是空就行——它只判断“有没有”,不判断“对不对”。
-
上一篇
-
下一篇