首页 > 数据库 >实战篇——SQL注入sqli-labs-master靶场实战二

实战篇——SQL注入sqli-labs-master靶场实战二

时间:2024-07-02 22:41:31浏览次数:1  
标签:实战篇 配置文件 单引号 labs sqli 报错 SQL Apache 注入

实战篇——SQL注入sqli-labs-master靶场实战(2)

SQL注入的高级利用

(1) 宽字节注入

有时后端会对用户输入的特殊字符进行转义处理,这时普通的注入方式就会失效。对于成对的单引号'',可以通过十六进制编码的方式绕过转义;而对于单个的单引号',当数据库的编码格式为GBK时,就要用到宽字节注入了。

跟上单引号没报错:

image-20240702204345113

跟上双引号又没报错:

image-20240702204421937

这种情况就基本可以判断后端对特殊字符进行了转义处理,调用了类似mysql_real_escape_string这样的函数。

解决办法就是在单引号或双引号之前加上一个%81,这样%81%5c就会被GBK解析为一个汉字,后面的单引号或双引号就保留了下来。

单引号报错:

image-20240702205456755

双引号没报错:

image-20240702205600503

单引号加注释符没报错:

image-20240702205740332

据此判断为单引号闭合。

后续爆库爆表爆字段爆数据的过程和联合注入几乎没有任何区别,唯一的难点在于成对单引号的处理。

直接使用肯定不行,会被转义:

image-20240702210355935

在每个单引号之前加上%81也不行,因为第一个'乗'会引起报错:

image-20240702212503645

解决办法就是对引用的数据进行十六进制编码:

image-20240702212801486

(2) 请求头注入

请求头注入包括User-Agent注入、Referer注入、Cookie注入等,原理都是一样的,下面以Cookie注入为例进行演示。

使用Burpsuite的Repeater模块进行测试:

image-20240702214045592

对Cookie中的uname属性加一个单引号:

image-20240702214441301

根据报错信息判断存在Cookie注入,且为查询式注入。

(也有可能是插入型注入,需要根据报错信息来判断。)

由于此处没有显示位,只能使用报错注入:

image-20240702215744085

(3) 一句话木马

通过SQL注入可以植入一句话木马,从而获得webshell(服务器权限)。但此处有两个前提条件必须同时满足,其一是MySQL的配置文件my.ini中必须存在'secure_file_priv='或'secure_file_priv=/',否则无法使用load_file和into outfile;其二是必须知道网站的根目录,否则无法将一句话木马植入正确的路径。

网站的根目录可以通过中间件的配置文件获得,而中间件的配置文件的路径则需要针对特定的操作系统和中间件进行猜测。

对于Windows操作系统Apache中间件的系统,其Apache配置文件的默认路径为.../Apache/conf/httpd.conf;由于此处使用phpstudy,因此Apache配置文件的默认路径为.../phpStudy/PHPTutorial/Apache/conf/httpd.conf;又由于phpstudy安装在C:/下,因此Apache配置文件的路径为C:/phpStudy/PHPTutorial/Apache/conf/httpd.conf。

image-20240702222745600

获得网站根目录后就可以在指定的路径下植入一句话木马了:

image-20240702222943539

最后通过中国蚁剑等工具连接一句话木马:

image-20240702223335924

SQL注入的防御

1.使用参数化查询,避免将用户输入直接拼接至SQL查询语句当中作为命令执行。

2.对用户输入当中的特殊字符或字符组合进行充分的过滤或转义处理。

标签:实战篇,配置文件,单引号,labs,sqli,报错,SQL,Apache,注入
From: https://www.cnblogs.com/yaoguyuan/p/18280686

相关文章

  • 基于springboot用“异常处理器“捕获解决“数据库信息录入重复“的问题“SQLIntegrity
    前言 当我们编写后端时,会遇到一个问题,那就是:假如A用户向我们的数据库录入完登录信息后(姓名,账号等),B用户同样采用了一个相同的姓名提交了登录信息,那这个时候就不满足username的唯一约束,此时数据库就会报错例如报错如下:Duplicateentry'····'forkey'····'提示......
  • 实战篇——SQL注入sqli-labs-master靶场实战一
    实战篇——SQL注入sqli-labs-master靶场实战(1)SQL注入的原理没有对用户的输入进行合法性判断或过滤,而是直接将其拼接至SQL查询语句当中作为命令执行,从而导致非法操作。SQL注入的检测也就是闭合方式的判断,根据报错信息的不同情况可以分为3类——(1)有报错信息(2)无报错信息,但......
  • sql-labs通关笔记(上)
    sql-labs通关笔记(上)这里我们先只讲解less-1到less-9联合查询注入Less-1:GET-Errorbased.Singlequotes-string界面在url中加入?id=1?id=-1判断注入点使用’或\来判断是否存在注入点payloadhttp://127.0.0.1/sqli/Less-1/?id=-1'报错信息near''-1''LIMIT0......
  • sqli-labs基础篇(1-22)
    ‍less-1字符型判断是否存在sql注入​?id=1and1=1--+​​​​?id=1'and1=1--+​​​​?id=1'and1=2--+​​​说明存在sql注入,并且注入类型为字符型注入联合注入先判断列数​?id=1'orderby3--+​有回显​​​?id=1'order......
  • 【sqlite3】联系人管理系统
    SQLite3实现简单的联系人管理系统有关sqlite3的基础知识请点击:SQLite3的使用效果展示:创建一个名为contacts.db的数据库首先,我们需要创建一个名为contacts.db的数据库,并建立一个名为"contact"的表,用于存储联系人信息。该表包含四个列:id、name、phone和email。以下是创......
  • SqlSugar操作Sqlite数据库
    SqlSugar操作Sqlite数据库SqlSugar官网.netcore和.net5/.net6/.net7/.net8/.net9/.net10  安装SqlSugarCore。netframework4.6+   安装SqlSugar。以下代码都在一个SqlSugarMethod类中。获得数据库对象:  这里要注意的是FilePath路径为生成程序的目录\bin\Debug\ne......
  • 小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQL
    代码仓库代码我已经上传到Github,大家需要的可以顺手点个Star!https://github.com/turbo-duck/biquge_fiction_spider背景介绍上一节已经拿到了每个小说的编码:fiction_code,并且写入了数据库表。接下来,我们写一个小工具,将数据表中的数据,都推送到RabbitMQ中。为了保......
  • Uipath 如何连接SQLite数据进行操作
      1、下载SQLiteDatabaseActivitiesforUipathpackages,无需安装SQLite数据库驱动。2、SQLite查询操作   2.1添加查询活动:在UIPathStudio的“Activities”面板中,搜索并添加“ExecuteQuery”活动。这个活动用于执行SQL查询语。在“ExecuteQuery”活动的属......
  • Sqlite3数据库基本使用
    文章目录一、基本概念二、安装三、使用(一)系统命令(二)关系型数据库表(三)sql语句1.建表语句2.插入语句3.查询语句4.更新语句5.删除语句6.删除表7.对列的操作(一般不会用到)8.主键9.其他命令四、常用的API接口函数(一)API接口函数1.打开和关闭数据库文件2.获取错误信......
  • Web安全中的XSS攻击详细教学(一),Xss-Labs靶场通关全教程(建议收藏)
    Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏)漏洞原理xss(crosssitescript)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型1. 存储型XSS(持久型):攻击者将......