知识点:
1、数据请求方式-GET&POST&COOKIE等
2、常见功能点请求方式-用户登录&IP记录等
3、黑盒白盒注入测试要点-SQLMAP注入参数
补充点:
黑盒测试:功能点分析
白盒测试:功能点分析&关键代码追踪
1.数据库注入 - access mysql mssql oracle mongodb postgresql等
2.数据类型注入 - 数字型 字符型 搜索型 加密型(base64 json)等
3.提交方式注入 - get post cookie http头等
4.查询方式注入 - 查询 增加 删除 更新 堆叠等
5.复杂注入利用 - 二次注入 dnslog注入 绕过bypass等
➢GET&POST&COOKIE&SERVER
➢实例黑盒-后台表单登陆框-POST注入
➢实例白盒-ESPCMS-商品购买-COOKIE注入
➢实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入
部分语言接受代码块
功能阐释
数据提交/接收方式的决定因素:
三种交互式
1.后台记录操作访问IP
代码获取访问者的IP地址 => 获取到的IP地址是否会记录到数据库当中? => 是,进行IP地址替换,自定义IP地址 => 进行SQL注入(和数据库有联系)(如果插入可以直接执行,就是一个sql注入)
2.网站要根据用户的访问设备给予显示页面
页面随访问设备不同而变更,提高用户体验。 注入存在:将网站使用者的UA传入数据库进行比对,符合SQL注入的条件
3.网站要进行文件上传,用户登录POST
文件上传可大可小,如果采用get请求则不满足(文件数据长度过大) 注入点:用户登录,接受账户密码,进行数据库查询和对比。
|
各部分代码接受数据的方式
PHP接受数据的方式: <?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']; $user_agent=$_SERVER["HTTP_USER_AGENT"]; $ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
echo $get."<hr>"; echo $post."<hr>"; echo $cookie."<hr>"; echo $request."<hr>"; echo $host."<hr>"; echo $user_agent."<hr>"; echo $ip; ?>
JS接受数据的方式: Java Spring 不同框架,不同写法 method=RequestMethod.GET:指定 HTTP GET 请求方法。 method=RequestMethod.POST:指定 HTTP POST 请求方法。 request.getParameter("参数名"):(都接受)获取传递给当前请求的查询参数或表单数据中指定键的值。 在 Spring 框架中,可以使用 @RequestParam("参数名") 注解来实现同样的效果。 可以直接获取get请求的参数key对应的value 也可以从请求体中获取参数的key对应的value
Python接受web数据的方式 Python flask 不同框架,不同写法 requests.get(url):发送 HTTP GET 请求到指定的 URL。 requests.post(url, data):发送 HTTP POST 请求到指定的 URL,其中包含指定的数据。 request.args.get(key):获取传递给当前请求的查询参数(query parameter)中指定键的值。 request.form.get(key):获取传递给当前请求的表单数据(form data)中指定键的值。 request.values.get(key):(都接受)获取传递给当前请求的所有参数(不论是查询参数还是表单数据)中指定键的值。如果同一键名既出现在查询参数中又出现在表单数据中,则以表单数据中的值为准。
无参数不代表无法注入 黑盒测试:看功能看特性,猜测数据请求的方式进行分析 判断POST注入点 1.抓包:BP抓包 2.看功能点:用户登录基本为POST
行为记录:IP地址记录等--都是实战得出的
白盒测试: 根据login.php源代码猜测到登录时需要对IP进行认证, 可以使用XFF进行伪造 => 重点页面,重点判断逻辑+重点函数方法分析
|