ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sql手工注入原理

2019-09-13 18:03:58  阅读:209  来源: 互联网

标签:语句 手工 单引号 样子 sql 原理 id select 注入


判断是否存在注入

纯粹一些个人练习心得,所以今天就写一篇博客记录一下

数值型
1.URL输入 and 1=1 / and 1=2 回显页面不同(整形判断)

如果页面运行错误,则说明此 Sql 注入为数字型注入。
因为当我们输入 and 1=1时,后台执行 Sql 语句:

如:select * from <表名> where id = x and 1=1

没有语法错误且逻辑判断为正确,所以返回正常。

当输入 and 1=2时,后台执行 Sql 语句:

select * from <表名> where id = x and 1=2

语句被带进数据库进行查询,虽然没有语法错误但是逻辑判断为假,所以返回错误,这时候我们就可以基本确定页面存在sql注入。


字符型

如这是一条后台语句:$sql=“SELECT * FROM users WHERE id='1 ’ LIMIT 0,1”;
可以看出,id被单引号包裹住

如果后台语句是:GET_id=’$id’这样子传

那么 ?id=’1’ 1就是$id 里面的值 这时候要注入可以这样

  ?id=’   1 然后在id的引号里面构造攻击语句    ’
  如?id=1' union select 1,2,3,4 --+'    // 这条语句的作用是联合查询第1,2,3,4列, 空格--+的作用是注释后面的内容

如 在URL地址栏输入?id=1’ 这时候 1后面的单引号把原本语句的一对单引号隔开了,所以页面会出现异常或者报错
但这时候,如果我们在1’后面加–+注释掉它后面的单引号( ?id=’1 ‘ --+ ’),让它语句后台的语句一致,这样子就不会报错了,同理,也可用这个方法来验证是不是属于字符型sql注入

正常的URL:http://127.0.0.1/sqli-labs-master/?id=1

1左右是有单引号包裹住的 我们在URL栏输入原本语句的单引号不会显示,如果我们输入的是这样子:?id=1’ --+
而后台会这样子显示 : id=’1’ --+’

所以我们可以这样子 ?id=1’ 这里写攻击语句 --+?

本来Id=’ ’ 是这样子的

后来我们在id=’ 在里面插入语句 ’

如果我们输入I’ 那么id是这样子的 id=’ 1’ ’ 这样子语句就形成不了闭合了,会报错,如果报错了,证明这条语句成功被带进数据库查询

这时候我们可以这样子 id=’ 1 ‘ --+ ’ --+ 把后面的单引号注释掉了,这样子就会形成闭合


注入手法

联合查询
我们可以这样子

?id=-1’ union select 1,2,3 --+ 这样子就可以形成一条带进数据库的查询语句了

联合查询要构造假的 所以1前面一定要加-号,因为有两条select语句,要用-号或者把1改为0把前面的注释掉
就是有两条select查询一句,要前面的那条错误无法使用,后面的注入一句才能显示这样子
当前面的id=1错误会执行后面的id=2,二后面的id=2错误会执行前面的id=1
在这里插入图片描述
或者=0也行
在这里插入图片描述
如果注入页面没有反应,无论是字符型还是数字型,都可以在前面加-号或者改为0试试

未完待续…

19.9.13

标签:语句,手工,单引号,样子,sql,原理,id,select,注入
来源: https://blog.csdn.net/chest_/article/details/100505649

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有