知识点
黑盒测试:功能点分析
白盒测试:功能点分析&关键代码追踪
1、数据库注入 -access mysql mssql oracle mongodb postgresql等
2、数据类型注入 -数字型 字符型 搜索型 加密型(base64 json)等
3、提交方式注入 -get post cookie http头等
4、查询方式注入 -查询 增加 删除 更新 堆叠 等
5、复杂注入利用 -二次注入 dnslog注入 绕过bypass等
数据库类型决定攻击的手法,payload不一样
数据类型注入 -payload考虑闭合 数据格式
提交方式-数据请求不同 注入需要按照指定方式去测试
告诉我们 url没有参数不代表没有注入 有些数据会在数据包才有体现
告诉我们 http数据包任何一个地方只要被接受 就有可能产生漏洞
案例
GET&POST&COOKIE&SERVER
实例黑盒-后台表单登录框-POST注入
实例白盒-ESPCMS-商品购买-COOKIE注入
实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入
GET&POST&COOKIE&SERVER
<?php
header("Content-Type: text/html;charset=''utf-8")
$get=$_GET['g'];
$post=$_POST['p'];
$cookie=$_COOKIE['c'];
$request=$_REQUEST['r'];
$host=$_SERVER['HTTP_HOST'];//当前访问url地址
$user_agent=$_SERVER["HTTP_USER_AGENT"];//浏览器信息
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];//8.8.8.8
ehco $get."<hr>";
echo $post."<hr>";
echo $cokie."<hr>";
echo $request."<hr>";
echo $host."<hr>";
echo $user_agent."<hr>";
echo $ip;
?>
就是进行一系列的传参操作,然后页面还会返回诸如cookie值,浏览器信息,url地址,ip地址等等一些信息。
1、后台要记录操作访问IP
IP要进行代码的获取,获取到之后,IP会不会记录到数据库中呢?
IP会写到数据库,如果IP能够自定义数据,是不是就能尝试SQL注入啊
2、网站要根据用户的访问设备给予显示页面
将各种UA进行数据库整理后,用户访问后对比数据库中的UA值来进行判断
3、网站要进行文件上传,用户登录 POST
由于上传的文件可大可小,如果采用GET不满足,就会采用POST
用户登录,接受账号密码后进行数据库查询后对比
Java Sprint 不同框架,不同写法
method=RequestMethod.GET
method=RequestMethod.POST
request.getParameter(“参数名”)
可以直接获取get请求的参数key对应的value
也可以从请求体中获取参数的key对应的value
python flask 不同框架,不同写法
requests get
requests post
request.args.get(key)
request.form.get(key)
request.values.get(key)
实例黑盒-后台表单登录框-POST注入
就是换种提交方式注入罢了,之前基本上都是get,这次换post
4报错,3正常回显,爆出字段为3
哈哈哈,刚打算报回显位直接就出了,奇奇怪怪
如果要用sqlmap自动注入,可以先把用burp抓到的包给copy下来
python sqlmap.py -r p.txt
最好就是直接把数据包扒下来,然后让sqlmap自动去读就行了,也可以加一些参数也就是下面的–data让sqlmap去用post发送数据,但是由于浏览器的一些环境不同,第二种办法有可能失败的
sqlmap的功能,可以通过post发送数据
python sqlmap.py -u “http:219.153.49.228:47267/login.php” –data “name=xiaodi&password=xiaodi”
实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入
接收ip地址
他显示还可以尝试4次,他怎么知道我还可以尝试4次?下次再尝试错误会不会变成还可以尝试3次?说明他是通过获取ip地址来判断的,如果是同一个ip地址发送的请求,他就会一起记录,所以这时候伪造一个ip就可以继续无限次尝试了也说明了他这里的后端代码是写了获取ip的函数的。
通过代码获取ip地址
XFF是可以伪造的,如果不加的话就会获取真实的ip地址
直接查看一下字段,发现是4个
在数据库里有单引号,所以要进行过滤,加个#
手工如果不太行,那就把数据包搞到sqlmap里去让他自动去跑跑看
python sqlmap.py -r xff.txt
后台记录ip功能的时候,要调用数据库,使用数据库的数据,这样就会产生SQL注入。
实例白盒-ESPCMS-商品购买-COOKIE注入
写代码,访问文件执行
那个文件调用的这个函数 或包含这个文件
构造了注入语句,这里涉及到了反序列化的知识点,所以构造payload的过程暂不表。虽然它有过滤,但是还是可以绕过的