Skip to content

黑客学习记录 -3 -SQL注入

字数
710 字
阅读时间
3 分钟
更新日期
2/6/2017

实验环境:MySql

Sql注入原理

  • 通过 and xor 等语句测试是否注入到了数据库
  • order by 1 order by 是按照某列的顺序来对数据表排序 1是列 通过这个可以知道表中有多少列
  • union select union特点是select要与前面的一致
  • union select 1,2,3,4,5 sql就会返回1,2,3,4,5

可以将前面注入错误的内容,以便union select可以显示内容

exists()判断括号内的东西是否存在

id=1' and exists(select * from users)--+ 查看存不存在users这个数据表

存在的话,下一步
id=1' and exists(select password from users)--+ 查看users这个表里存不存在password这个字段

可以看到这里是猜数据表和字段,要么是用字典去fuzz
很繁琐,有没有更好的办法呢?
有,Mysql有个元数据库 information_schema

information_schema

information_schema 是一个字典,
包含了整个 mysql 的所有信息,
本质上是一个 database
里面有三个表比较常用,
分别是 tablescolumns ,还有 schemata

  • information_schema.schemata
    • 储存了所有数据库的信息,
    • 字段:schema_name 存放数据库名字
  • information_schema.tables
    • 储存了所有表的信息
    • table_name //存放表格的名字
    • table_schema //存放表格所在的数据库名字
  • information_schema.columns
    • 储存了所有列的信息
    • column_name //存放列的名字
    • table_name //存放表格的名字
    • table_schema //存放表格所在的数据库名字

for example

查找数据库有哪些数据库
id=1' union select 1,schema_name,3,4,5 from information_schema.schemata--+

小节

网上有很多种sql注入的类型,什么数字型,字符型,搜索型…..

sql注入漏洞产生最根本的原因是什么?
是把用户输入的数据当做代码去执行,

白盒分析

get方法接收id,单引号包裹后,直接动态构造sql查询语句

黑盒分析

  • id=1 and 1=1
  • id=1 and 1=0
  • 判断是否当作代码执行了

盲注&&显著

有的代码执行错误后不会返回任何信息,只有执行正确才会返回信息

  • 显注是 :我问数据库问题,他巴拉巴拉给我一通说
  • 盲注是:我问他问题,他只能回复是或者不是
  1. exists(),一样可以猜出数据表和其中字段
  2. id=1 and exists(select password from users)--+
  3. substr()用来截取字符串
  4. id=1 and (substr(user(),1,1)>'a')--+
  5. 用substr截取每一位判断比较(ascii码比较) 通常使用 二分法

小节

  • 注入的利用方法很多
  • 报错注入
  • 延时注入 sleep()

撰写

布局切换

调整 VitePress 的布局样式,以适配不同的阅读习惯和屏幕环境。

全部展开
使侧边栏和内容区域占据整个屏幕的全部宽度。
全部展开,但侧边栏宽度可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
全部展开,且侧边栏和内容区域宽度均可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
原始宽度
原始的 VitePress 默认布局宽度

页面最大宽度

调整 VitePress 布局中页面的宽度,以适配不同的阅读习惯和屏幕环境。

调整页面最大宽度
一个可调整的滑块,用于选择和自定义页面最大宽度。

内容最大宽度

调整 VitePress 布局中内容区域的宽度,以适配不同的阅读习惯和屏幕环境。

调整内容最大宽度
一个可调整的滑块,用于选择和自定义内容最大宽度。

聚光灯

支持在正文中高亮当前鼠标悬停的行和元素,以优化阅读和专注困难的用户的阅读体验。

ON开启
开启聚光灯。
OFF关闭
关闭聚光灯。

聚光灯样式

调整聚光灯的样式。

置于底部
在当前鼠标悬停的元素下方添加一个纯色背景以突出显示当前鼠标悬停的位置。
置于侧边
在当前鼠标悬停的元素旁边添加一条固定的纯色线以突出显示当前鼠标悬停的位置。