sql注入基础

什么是注入?

  通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,从而进一步得到相应的数据信息

通过构造一条精巧的语句,来查询到想要的信息

注入分类

按照查询字段分为:

字符型   当输入的参数为字符串时,称为字符型

数字型   当输入的参数为整形时,可以认为是数字型注入

 

按照注入方法  union注入,报错注入,布尔注入,时间注入,堆叠注入  

什么是注入点

注入点就是可以实行注入的地方,通常是一个访问数据库的连接

如本页面注入点input the ID

 

进入Less-1网址后面加上 ?id=1

 

注入点常在有人机交互的地方

如何判断是字符型注入还是数字型注入

  使用and 1=1 和and 1=2来判断

  数字型一般体检内容为数字,但数字不一定为数字型

  

  Less-1 提交and 1=1 和提交and 1=2 都能正常显示界面,则不可能是数字型注入,即为字符型注入

 

  Less-2 提交 and 1=2 条件无法满足,语句无法被数据库查询到,网页无法正常显示,判断为数字型注入

 

 数字型还可使用运算(减法)进行判断,等于的是运算后的结果,加号会被理解成空格

 

查看源文件中的源代码:

字符型需要闭合符,如图所示    

    

  提交 1 and 1=1

    

   单引号闭合语句后where 语句为一个条件id=‘1 1 and 1=1’

 

数字型则不需要闭合符闭合

  

   提交 and 1=2

  

  数字型不需要闭合

闭合方式

     '        "        ')        ")       其他  

如何判断闭合方式

Less-1输入?id=1'"  报错为near 1"" 多了一个 ' 闭合符为 '

 

Less-3 输入id=1'''  报错为near 1'''') 多一个 ')  及闭合符号为 ') 

 

闭合的作用

手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句,查询需要的参数,不需要的语句可以使用注释符号 ‘--+’ 或 ‘#’ 或 ‘%23’ 或‘-- -’ 注释掉

    注释掉:利用注释符号暂时将程序脱离运行

    把某段程序 “注释掉” ,就是让它暂时不运行(而非删除掉)

union联合注入

需要先使用group by 或 order by 二分法判断默认页面数据列数量,group by不会被防火墙发现

?id=1' group by 3 -- -  正常

?id=1' group by 4 -- -  异常

判断有3列

提交  ?id=1' union select database() -- -      报错column数量错误

查询信息使用  

  ?id=1' union select 1,2,3 -- -   只会读取第一行

所以在浏览器中显示为:

  在phpmyadmin中的查询:

 

页面只能显示一个内容,第二句的内容是不回显的,可以将第一句的内容改为数据库不存在的数据,如id=0

 

要使第一行不存在,才会在页面显示第二行,所以使 id=-1' 后面不变

成功找到 回显位置(能够在页面体现出来)

所i以2和3都可以回显,在 ?id=1' union select 1,2,3 -- - 中将2或3替换成database()

即?id=1' union select 1,2,database() -- -

 

 

 查询基础步骤:

  1. 查找注入点
  2. 判断是字符型还是数字型注入 and 1=1 1=2 /3-1
  3. 如果字符型,找到它的闭合方式  '    ''   ')    '')
  4. 判断查询列数,group by    order by
  5. 查询回显位置,-1

 

posted @   程亦澄  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示