题目详解
题目涉及的知识点:一个基础的sql注入语句
题目链接:my-first-sqli – Bugku CTF
根据这道题,你将学会什么是基础的sql注入。(好奇心强的你将可以自行研究深入理解sql注入的原理与过程,后续涉及到的复杂知识点我可能会进行单独扩展来讲)
这道题提示你这是个注入题,那么将打开网站进行第一步
你会发现这是一个登录界面,只要输入账号密码就行了,英语好的你们我就不进行翻译了
第一步:账号输入admin‘,密码随便输入。(来进行判断是否存在注入)
你会发现返回一个语法错误,这时说明存在一个逻辑型可注入点(SQL注入是一种利用Web应用程序对数据库进行未授权访问的技术。攻击者通过在Web表单或其他输入字段中插入或“注入”SQL查询,从而欺骗应用程序执行非预期的数据库命令。)
第二步:根据逻辑型语法输入账户处输入 admin’ or 1=1 –+
点击确认
这个就是你想要的答案辣!!!
接下来分析SQL语句“’admin’ or 1=1 –+”
- ‘admin’ 是一个用户名,攻击者假设“admin”是管理员的用户名。
- or 1=1 是一个逻辑短路,因为 1=1 总是真的,所以 username=’admin’ or 1=1 总是成立。这意味着无论用户名是什么,这个条件都会被满足。
- –+ 在SQL中表示注释的开始。在SQL查询中,– 之后的任何内容都会被视为注释,从而忽略后面的SQL代码。在某些情况下,+ 可能是为了防止URL编码时–被转换为%2D%2D,这是一种简单的绕过输入过滤的方法。
例如,如果一个Web应用程序构建了一个SQL查询如下:
SELECT * FROM users WHERE username = ‘[用户输入]‘ AND password = ‘[用户输入]‘
攻击者可以输入 ‘admin’ or 1=1 –+ 作为用户名,那么实际的查询会变成:
SELECT * FROM users WHERE username = ‘admin‘ or 1=1 –‘ AND password = ‘[用户输入]’(橙色这个是因为被注入了‘- -‘导致‘- -‘后面视为注释)
由于 1=1 总是成立,这个查询将返回数据库中所有用户的信息,从而绕过了密码验证。
作者的话:相信你对sql注入有了一点初步的理解,如果对sql感兴趣你可以去寻找资料进行全面的学习。
暂无评论内容