01.sql注入
2019-03-14 本文已影响0人
新一mghc
1. 形成原因
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的数据拼接到sql语句中后,被当作SQL语句的部分执行,从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
业务场景
凡是涉及与数据库交互的业务(参数)都可能存在SQL注入;
在 应用渗透中,重点关注查询、搜索等业务
SQL注入技巧(绕WAF)
●大小写混合
●替换关键字
●使用编码
●使用注释 "//","--","/**/","#"
●使用特殊符号
- 使用反引号`,可以用来过空格和正则,还可以将其做注释符用
- 神奇的"-+.", select+id-1+1.from users;"+"是用于字符串连接的,"-"和"."在此也用于连接,可以逃过空格和关键字过滤
- @符号, select@^1 from users;@用于变量定义如@var_name,@表示用户定义,@@表示系统变量
常见注入点分类
- 按变量类型分
- 数字型 user_id=$id
- 字符型 user_id='$id'
- 搜索型 text LIKE '%$_GET['search']%'”
- 按HTTP提交方式分
- GET注入
- POST注入
- Cookie注入
- 按注入方式分
- 报错注入
- 盲注
- 布尔盲注
- 时间盲注 - union注入
- 编码问题
- 宽字节注入
2.测试步骤
第一步:注入点探测
自动方式:使用web漏洞扫描工具,自动进行注入点发现
手动方式:手工构造 sql inject测试语句进行注入点发现
第二步:信息获取
通过注入点取期望得到的数据。
1环境信息:数据库类型数据库版本操作系统版本,用户信息等。
2.数据库信息:数据库名称数据库表,表字段字段内容(加密内容破解)
第三步:获取权限
获取操作系统权限:通过数据库执行shell,上传木马
基于报错的信息获取-三个常用的用来报错的函数
- updatexml():函数是 MYSQL对XML文档数据进行查询和修改的 XPATH函数
- extractvalue():函数也是 MYSQL对XML文档数据进行查询的 XPATH函数
- floor(): MYSQL中用来取整的函数
sqlmap的使用
- 获取数据库名 pikachu
sqlmap -u "http://192.168.58.130/pikachu/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2"
- 获取表名 user
sqlmap -u "http://192.168.58.130/pikachu/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" -D pikachu --tables
- 获取列名 username,password
sqlmap -u "http://192.168.58.130/pikachu/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users --columns