游客发表

如何去搭建一个有漏洞的网站

发帖时间:2026-10-17 04:39:08

2019年,何去一个朋友让我帮他看一个刚上线的搭建的网电商网站。打开首页,漏洞URL里赫然写着 product.php?何去id=1024。我随手把 1024 改成 1024',搭建的网页面直接甩出一段 MySQL 报错,漏洞表名、何去字段名全在屏幕上。搭建的网那一刻我就知道,漏洞这站活不过一周。何去

这篇文章要聊的搭建的网就是这种站——故意留洞的站。不是漏洞教你黑别人,是何去让你亲手搭一个千疮百孔的靶机,把常见漏洞一个个摸一遍。搭建的网理解攻击,漏洞才能写好防御。

先把地基搭歪

选 PHP + MySQL,别用框架。框架帮你挡了太多东西,反而看不清漏洞从哪来。装个 phpstudy 或者用 Docker 拉个 lamp 镜像,十分钟搞定。数据库建一个 users 表,字段就四个:id、username、password、email。密码明文存,别哈希——这不是生产环境,你要的就是它烂。

前端页面用最朴素的 HTML 表单,登录、注册、搜索三个功能足够了。搜索框是重点,后面全靠它。

SQL 注入:把用户输入直接拼进查询

登录逻辑写成这样:

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $sql);

没有预处理,没有转义。在用户名框里输入 ' OR '1'='1' --,密码随便填,直接登录成功。你可以在浏览器地址栏里试,也可以用 Burp Suite 抓包改参数。第一次看到自己绕过登录的那一刻,比看十篇教程都管用。

搜索功能同理。search.php?keyword=xxx 直接把 keyword 拼进 LIKE 语句。输入 ' UNION SELECT 1,username,password,4 FROM users --,页面上就会把所有人的账号密码列出来。注意列数要匹配,不匹配就慢慢试,这是个体力活。

XSS:让评论区长出脚本

加一个留言板。用户提交的内容原样存进数据库,读取时用 echo $row['content'] 直接输出。提交 <script>alert(document.cookie)</script>,刷新页面,弹窗出现。存储型 XSS 就这么简单。

想更隐蔽一点,用 <img src=x onerror=alert(1)>。页面加载图片失败时触发 onerror,效果一样。你甚至可以在自己的靶机上写个脚本,把 cookie 发到另一个端口,模拟完整的会话劫持链条。

文件上传:不检查后缀的后果

做一个头像上传功能。代码只判断 $_FILES['file']['type'],而这个值来自客户端,改包就能绕过。上传一个 shell.php,内容写 <?php system($_GET['cmd']); ?>。访问 /uploads/shell.php?cmd=whoami,服务器把当前用户告诉你。

如果连 type 都不判断,直接 move_uploaded_file,那更省事。上传目录别设执行权限?在靶机里故意设成可执行,你要的就是这个效果。

越权:改个 id 就能看别人的订单

订单详情页写成 order.php?order_id=1001,后端只查订单,不验证归属。登录用户 A,把 order_id 改成 1002,看到了用户 B 的收货地址和电话。水平越权,逻辑漏洞里最常见的一种。

管理后台也别做角色校验。admin.php 只判断 session 是否存在,不判断是不是管理员。普通用户登录后直接访问 admin.php,后台菜单全出来了。

最后收个尾

把这些漏洞一个个复现一遍,用 Burp 抓包,用 sqlmap 跑一遍注入点,用 BeEF 挂个 XSS 钩子。你会在某个瞬间突然明白:安全不是加个 WAF 就完事,是从第一行代码开始就得绷着的那根弦。

靶机搭完,别放到公网。本地玩玩,理解了就拆掉。真正有价值的是你脑子里那套攻击路径——下次写代码时,手会自己停下来想一想。

    热门排行

    友情链接