五,SQL注入基础
无论学习任何漏洞,都要明白一句话:函数决定漏洞性质,变量决定存不存在漏洞
一,本质
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