提权
UGO首先简单了解下UGO
U(User):文件主人(比如你创建的文件,你就是U)
G(Group):文件所属的“小团队”(比如财务部的文件,G就是财务组)
O(Others):既不是主人也不在团队里的其他人
举个栗子🌰:你写了个工资表文件,U是你自己(能改),G是财务部(只能看),O是其他部门(完全没权限)
1、概述
文件权限设置:设置赋予某个用户或组能够以何种方式访问某个文件
权限对象:属主u、属组g、其他人o、所有人a(u+g+o)
权限类型:读(r=4)、写(w=2)、执行(x=1)
所谓的ugo提权其实是修改其权限
例如用chmod命令(比如chmod o+w 工资表.txt就是让其他人也能修改这个文件)
那么当管理员有时候配置不当 将/etc/passwd 文件 权限改成o+r,那么我们作为普通用户的话就能够看到密码的哈希值,给普通用户的脚本加上u+s(SUID),运行时就变root权限
这种通过改UGO权限扩大访问范围的操作,才是“利用UGO机制提权”的本质
Linux suid提权什么是suidsuid(s ...
session伪造
flask的session伪造1.sessiond作用由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息
2.flask session的储存方式第一种方式:直接存在客户端的cookies中第二种方式:存储在服务端,如:redis,memcached,mysql,file,mongodb等等,存在flask-session第三方库flask的session可以保存在客户端的cookie中,那么就会产生一定的安全问题。
3.flask的session格式flask的session格式一般是由base64加密的Session数据(经 ...
Java反射机制是什么?
好久没更新自己的blog 这一个月确实太多事情了 放下了自己ctf的学习进度 话说还是边做笔记变学习有效率
Java程序运行原理Java程序运行原理其实本质上就是Java虚拟机与跨平台原理
Java程序的运行过程就像“翻译官带着菜谱去不同国家的厨房做饭”,核心是跨平台执行和自动管理内存。
1.写代码→翻译成通用菜谱 (编译)·你写的代码:用Java语法写好的java文件,比如一个“西红柿炒蛋”的菜谱(代码)·编译成字节码:用javac命令把代码翻译成.class文件(字节码)。这相当于把中文菜谱转成“国际通用菜谱”(字节码),任何国家的厨房(操作系统)都能看懂。
关键点:·字节码不是机器码,而是一种中间格式,类似“通用菜谱”,需要二次翻译。·跨平台的关键:每个国家(操作系统)配一个翻译官(JVM)就能用同一份菜谱
2.厨房开工→JVM加载并执行·启动JVM:运行java命令时,相当于请来翻译官(JVM)进厨房。·类加载器搬食材:JVM的“搬运工”(类加载器)把菜谱(字节码)和食材(类信息)搬到厨房的不同区域:。方法区:存放菜谱步骤(类结构、静态变量)。。堆内存:放炒菜用的锅碗瓢盆(对 ...
python基础学习
Python是一种跨平台的编程语言,这意味着它可以在Windows,MacOS,Linux等多种平台上运行,甚至已经移植到Java和.NET虚拟机。它是免费和开源的。
即使当今的大多数Linux和Mac已经预装了Python,但该版本可能已过时。因此,安装最新版本始终是一个好主意。
说明:作者根据https://cainiaoplus.com/进行学习
下面学习过程我直接用linux python 来编写了
Python 关键字和标识符关键字是Python中的保留字。我们不能将关键字用作 [变量名](https://cainiaoplus.com/python/python-variables-datatypes.html),[函数](https://cainiaoplus.com/python/python-function.html)名或任何其他标识符。它们用于定义Python语言的语法和结构。在Python中,关键字区分大小写。Python 3.7中有 33 个关键字。该数字在一段时间内可能会略有变化。所有关键字必须是小写的,其中 True,False 和 None 除外。下面列 ...
java基础
1.安装jdk和IDEA
2.创建自己的第一个项目
3.编写自己的第一段代码
package com.Gu0f3n;public class test01 { public static void main(String[] args) { System.out.println("hello.world" ); }}//hello.world
注释
单行注释 / /
多行注释/**/
package com.Gu0f3n;//这是我的第一段代码public class test01 { //main方法是程序的入口 public static void main(String[] args) { //在控制台上进行打印 System.out.println("hello,world"); System.out.println("hello,wo ...
java study
web279点进去发现一个登录框
没思路 看wp
了解下
Struts2是用Java语言编写的一个基于MVC设计模式的Web应用框架
描述:
struts2漏洞 S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。例如,在注册或登录页面中。如果提交失败,则服务器通常默认情况下将返回先前提交的数据。由于服务器用于%{value}对提交的数据执行OGNL表达式解析,因此服务器可以直接发送有效载荷来执行命令。
在这里提到了 OGNL 表达式
OGNL(Object-Graph Navigation Language)是一种用于在Java应用程序中访问和操作对象图的表达式语言。OGNL最初是由Drew Davidson和Luke Blanshard开发的,主要用于Java的对象属性访问和修改,类似于其他表达式语言如JSTL、EL等。OGNL表达式可以用来简化对复杂对象结构的访问和操作,非常适合于MVC框架中绑定表单数据到模型对象的场景
OGNL 表达式的基本功能
...
BUUCTF
[RCTF2015]EasySQL一个登录页面,应该要先注册进入
随便注册
进入发现可以修改密码 第一想法就是二次注入
什么是二次注入参考文章:https://www.cnblogs.com/jackie-lee/p/16124022.html
二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,**恶意数据被读取并进入到SQL查询语句**所导致的注入。防御者即使对用户输入的恶意数据进行转义,当数据插入到数据库中时被处理的数据又被还原,Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。也就是说一次攻击造成不了什么,但是两次配合起来就会造成注入漏洞。
SQL二次注入,指的是在有些应用场景下,我们先把SQL注入的payload写入到目标站点数据库中,然后再在某些实际将该数据取出,使得我们写入的payload执行。因此,SQL二次注入一般分为2步,第一步即向目标站点的数据库中插入恶意数据,第二步即使得我们插入的恶意数据被目标站点所引用。SQL二次注入的实现,在第一步要求我们插入的恶意数据能够成功写入到目标站点的数据库中,站点可以对我们写入的恶意数据进行转 ...
CTFshow
web171查询语句
//拼接sql语句查找指定ID用户$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
给了源码
闭合单引号 而且字段可以直接看出三列
爆库
1' union select 1,database(),3--+
ctfshow_web
分析下给的源码
选择字段
select username, password: 选择user表中的username和password列。
指定表
from user: 指定查询的数据表为user。
条件
where username !='flag': 条件是username不等于'flag'。这确保查询结果中不包含用户名为flag的记录。
and id = '".$_GET['id'].&qu ...
NSSCTF
[HNCTF 2022 WEEK2]easy_sql参考文章:https://blog.csdn.net/Jayjay___/article/details/132956781
知识点这题考察了无列名注入
我们常用的SQL注入方法是通过information_schema这个默认数据库来实现,可是你有没有想过,如果过滤了该数据库那么我们就不能通过这个库来查出表名和列名。不过我们可以通过两种方法来查出表名:
InnoDb引擎
从MYSQL5.5.8开始,InnoDB成为其默认存储引擎。而在MYSQL5.6以上的版本中,inndb增加了innodb_index_stats和innodb_table_stats两张表(mysql.innodb_table_stats),这两张表中都存储了数据库和其数据表的信息,但是没有存储列名。高版本的 mysql 中,还有 INNODB_TABLES 及 INNODB_COLUMNS 中记录着表结构。
sys数据库
在5.7以上的MYSQL中,新增了sys数据库,该库的基础数据来自information_schema和performance_chema, ...
Ciscn2024web复现
simple_php源码
<?phpini_set('open_basedir', '/var/www/html/');error_reporting(0);if(isset($_POST['cmd'])){ $cmd = escapeshellcmd($_POST['cmd']); if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\'|\"|id|whoami/i', $cmd)) { system($ ...