五,SQL注入基础

时间:2021-07-05 17:05:47   收藏:0   阅读:0

无论学习任何漏洞,都要明白一句话:函数决定漏洞性质,变量决定存不存在漏洞

 

一,本质

  1,漏洞函数:$sql="select * from sys_article where id = $id"

  2,可控变量:$id=$_GET[‘id‘];(其它层面的先不考虑)

  3,保护: 过滤关键字,进行函数判断(只能纯数字什么的)

  4,判定原理:传统and 1=1正常,and1=2页面不正常

        了解本质后:新方法 id=11111111111111111111看页面正不正常,如果不正常,说明有和数据库进行交互,存在注入

  5,多个参数http:xx.xx.xx.xx/new_list.php?id=1&x=1&page=1

    AWVS爆出id存在注入点,直接?id=1 and 1=1&x=1

    把id放在最后面,也是一样的(工具)

二,判别

  1,sql注入语句

  2,搭建平台组合

  3,端口信息

  判断是什么数据库

 

三,传输层面

  1,get,直接表现在url上面

  2,post,抓包可以进行判断,一般就是在登入框什么的

      sqlmap对post跑的时候有两种方法:首先是直接用--data(这个不建议),还有就是直接跑这整个数据包python sqlmap.py post.txt 这里数据包要跑的注入点要用*表示,同时,可以在不同的地方给*,推荐使用数据包形式,还原用户真实的请求,用--data的话,会有sqlmap指纹

     这里还有一个点就是——万能密码:$user=‘ or ‘1‘=‘1       select * from admin where username=‘‘ or ‘1‘=‘1‘ and password=‘$pass‘

                     $user=‘ or 1=1 #    select * from admin where username=‘‘  or 1=1

  3,requsest:post和get一起接收

  4,,cookie,不要忘了这个

  5,$_SERVER[‘HTTP_HOST‘],接收host的值,当然也可以用sqlmap跑

  6,$_SERVER["HTTP_USER_AGENT"],接收user_agent部分,获得浏览器的信息(也是和数据库交互的一个点,进行对浏览器信息的比对,存储)

  7,$_SERVER["HTTP_X_FORWARDED_FOR"],获取数据包中的IP,当然,这个要区别,有能绕过的,也有不能绕过的,(后台访问日志,防护日志什么的都会记录ip,查询ip什么的)

https://www.cnblogs.com/lushaoyan/p/11088213.html

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!