sqliabs靶场21-25关攻略

张开发
2026/4/18 14:06:28 15 分钟阅读

分享文章

sqliabs靶场21-25关攻略
Less-21Cookie注入Base64编码单引号括号闭合判断注入类型与闭合方式首先访问关卡页面使用默认账号密码admin/admin登录页面会显示当前登录用户信息。按F12打开开发者工具切换到「Application」→「Cookies」找到名为uname的Cookie其值为YWRtaW4即admin的Base64编码。尝试构造恶意Payload未编码admin) and 11#将其进行Base64编码得到YWRtaW4nKSBhbmQgMT0xIw替换原有Cookie值刷新页面页面正常显示说明闭合方式正确若将Payload改为admin) and 12#编码后替换Cookie页面无内容确认存在注入漏洞。爆数据库名构造报错注入Payload未编码admin) and updatexml(1,concat(0x7e,(select database()),0x7e),1)#Base64编码后替换Cookie刷新页面报错显示数据库名security。后续可直接爆出数据Less-22Cookie注入Base64编码双引号闭合判断闭合方式登录后查看Cookieuname值仍为YWRtaW4admin的Base64编码。构造Payload未编码admin and 11#Base64编码后替换Cookie页面正常显示替换为admin and 12#页面无内容确认闭合方式为双引号。爆表、爆字段、爆数据步骤与21关完全一致只需将Payload中的闭合符)改为编码后提交即可此处不再重复赘述。Less-23GET字符型注入过滤注释符判断注入类型与闭合方式访问关卡页面页面报错提示You have an error in your SQL syntax确认是单引号闭合的字符型注入尝试使用?id1 #或?id1 --注意--后有空格依然有报错判断注释被过滤掉了。绕过注释过滤使用and 11闭合剩余SQL语句构造Payload?id1 and 11页面正常显示改为?id1 and 12页面无内容确认注入漏洞存在且绕过注释过滤成功。爆数据库名构造报错注入Payload?id-1 union select 1,database(),3 and 11页面显示数据库名security使用union注入时需将id改为负数确保原始查询无结果让union查询结果显示。后续可直接爆出数据Less-24POST二次注入存储型1. 理解二次注入原理注册页面使用 mysqli_real_escape_string() 函数对用户名、密码进行转义单引号会被转义为 \直接注入无效但当注册的恶意用户名被存储到数据库后修改密码时系统会读取该用户名并拼接进SQL语句此时转义失效恶意Payload被执行。2. 注册恶意账号访问注册页面New User注册用户名设为 admin#密码设为 123456两次输入一致点击注册。此时数据库中存储的用户名是 admin#转义后存储但读取时未转义。3.登录恶意账号使用注册的账号admin#和密码123456登录进入修改密码页面。4.触发二次注入在修改密码页面输入新密码如test123点击提交。此时系统执行的SQL语句为UPDATE users SET passwordtest123 WHERE usernameadmin# AND password123456其中#注释掉了后面的内容实际执行的是UPDATE users SET passwordtest123 WHERE usernameadmin即修改了admin账号的密码。5.验证结果退出当前账号使用admin作为用户名test123作为密码登录即可成功登录证明二次注入成功。若想进一步获取数据库信息可构造更复杂的恶意用户名如admin and updatexml(1,concat(0x7e,database()),1)#注册后登录并修改密码触发报错注入。Less-25GET字符型注入过滤OR/AND关键字核心考点GET字符型注入单引号闭合靶场通过黑名单过滤了OR和AND关键字不区分大小写需通过“双写关键字”的方式绕过过滤如将OR改为OORRAND改为AANDND过滤函数会删除中间的OR/AND剩余部分拼接成完整的关键字。判断注入类型与过滤规则修改为?id1 or 11 -- 页面无正常回显说明OR关键字被过滤尝试?id1 oorr 11 -- 页面正常显示确认可通过双写绕过过滤闭合方式为单引号。绕过OR/AND过滤所有需要使用OR的地方替换为OORR需要使用AND的地方替换为AANDND例如?id1 oorr 12 --页面无内容验证绕过有效。爆数据库名构造报错注入Payload?id-1 oorr updatexml(1,concat(0x7e,(select database())),1) -- 页面报错显示security。后续可直接爆出数据

更多文章