2021-04-24

                                  	**Sql注入**

在下初次写博客,如有纰漏,请指出,感谢!
正文如下:
sql注入原理:
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。(我们输入的语句拼接原来的语句后进入数据库)。
注入类型:
1.数字型注入:当输入的参数为整型时,则有可能存在数字型注入漏洞。
判断数字型漏洞的 SQL 注入点:① 先在输入框中输入一个单引号 ’ eg:SELECT * FROM table WHERE id=1’--------页面异常
② 在输入框中输入 and 1 = 1 eg:SELECT * FROM table WHERE id=1 and 1 = 1-------页面正常
③ 在数据库中输入 and 1 = 2 eg:SELECT * FROM table WHERE id=1 and 1 = 2-----页面异常

2.字符型注入:当输入参数为字符串时,则可能存在字符型注入漏洞。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合。
判断字符型漏洞的 SQL 注入点:① 还是先输入单引号 admin’ 来测试
eg:SELECT * FROM table WHERE username = ‘admin’’-----页面异常。
② 输入:admin’ and 1 = 1 –
Eg:SELECT * FROM table WHERE username = ‘admin’ and 1 = 1 – —页面显示正确。
③ 输入:admin’ and 1 = 2 –

Eg:SELECT * FROM table WHERE username = ‘admin’ and 1 = 2 – --页面错误
3.其他类注入
POST注入:注入字段在 POST 数据中
Cookie注入:注入字段在 Cookie 数据中
报错注入:利用了数据库的某些机制注入
延时注入:使用数据库延时特性注入
搜索注入:注入处为搜索的地方
base64注入:注入字符串需要经过 base64 加密…
工具注入:使用sqlmap,穿山甲,萝卜头等注入工具。
Sqlmap常用参数:
-u #注入点
-g 谷歌搜索
-f #指纹判别数据库类型
-b #获取数据库版本信息
-p #指定可测试的参数(?page=1&id=2 -p “page,id”)
-D “” #指定数据库名
-T “” #指定表名
-C “” #指定字段
-s “” #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log”  恢复:-s “xx.log” –resume)
–columns #列出字段
–current-user #获取当前用户名称
–current-db #获取当前数据库名称
–users #列数据库所有用户
–passwords #数据库用户所有密码
–privileges #查看用户权限(–privileges -U root)
-U #指定数据库用户
–dbs #列出所有数据库
–tables -D “” #列出指定数据库中的表
–columns -T “user” -D “mysql” #列出mysql数据库中的user表的所有字段
–dump-all #列出所有数据库所有表
–exclude-sysdbs #只列出用户自己新建的数据库和表
–dump -T “” -D “” -C “” #列出指定数据库的表的字段的数据(–dump -T users -D master -C surname)
–dump -T “” -D “” –start 2 –top 4 # 列出指定数据库的表的2-4字段的数据
–dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft -u 指定一个url连接,url中必须有?xx=xx 才行(最常用的参数)例:-u “www.abc.com/index.php?id=1”
接下来我使用sqlmap进行一下实操。
试验环境:东塔网络安全学院实战靶场----数字型注入。
在这里插入图片描述而我们的工具sqlmap(在kali中)在这里插入图片描述将目标URL放入配合-U就可以得到所需信息,如图
在这里插入图片描述从这张图中,我们得到了信息有 8-columns等
接着,我们使用-tables获得表,如图在这里插入图片描述从图中,我们了解到,我们所找的key在dotaxueyuan下的key。
接着,我们使用-dump 来显现key的值,如图

在这里插入图片描述这样,我们就得到我们所需的key值了。

sql手注的一般流程
1.判断注入点
2.判断字段数
3.判断回显点
4.查询相关内容
常用的语句:
select * from ‘’
where id=97 and(同时满足) or(做选择) username=面包
order by(根据指定的列排序)
limit(选择你需要的行列)0,1
union select(合并两张表,且两表列数或字段数必须相同)eg:select * from test union select * from bigfish
防注入:
1.严格的数据类型:在程序中判断数据类型(用is_numeric(),ctype_digit()等函数判断)
2.特殊字符转义:mysql中使用“\”转义
3.使用预编译语句;
4.架构技术;
5.储存过程(sql语句集)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值