01.sql注入

1. 形成原因

SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的数据拼接到sql语句中后,被当作SQL语句的部分执行,从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

业务场景

凡是涉及与数据库交互的业务(参数)都可能存在SQL注入;
在 应用渗透中,重点关注查询、搜索等业务

SQL注入技巧(绕WAF)

●大小写混合
●替换关键字
●使用编码
●使用注释 "//","--","/**/","#"
●使用特殊符号

  • 使用反引号`,可以用来过空格和正则,还可以将其做注释符用
  • 神奇的"-+.", select+id-1+1.from users;"+"是用于字符串连接的,"-"和"."在此也用于连接,可以逃过空格和关键字过滤
  • @符号, select@^1 from users;@用于变量定义如@var_name,@表示用户定义,@@表示系统变量

常见注入点分类

  1. 按变量类型分
  • 数字型 user_id=$id
  • 字符型 user_id='$id'
  • 搜索型 text LIKE '%$_GET['search']%'”
  1. 按HTTP提交方式分
  • GET注入
  • POST注入
  • Cookie注入
  1. 按注入方式分
  • 报错注入
  • 盲注
    - 布尔盲注
    - 时间盲注
  • 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

你可能感兴趣的:(01.sql注入)