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($ ...
ctfshow摆烂杯复现
一行代码<?php/*\# -*- coding: utf-8 -*-\# @Author: h1xa\# @Date: 2021-11-18 21:25:22\# @Last Modified by: h1xa\# @Last Modified time: 2021-11-18 22:14:12\# @email: h1xa@ctfer.com\# @link: https://ctfer.com*/echo !(!(include "flag.php")||(!error_reporting(0))||stripos($_GET['filename'],'.')||($_GET['id']!=0)||(strlen($_GET['content'])<=7)||(!eregi("ctfsho".substr($_GET['content'],0,1),"ctfshow"))||substr($_GET[ ...
Sanic's revenge(复现)
复现这个之前先要学习下python的原型链污染(未学┭┮﹏┭┮)
之前学了Nodejs原型链污染,Python原型链污染和Nodejs原型链污染的根本原理一样,Nodejs是对键值对的控制来进行污染,而Python则是对类属性值的污染,且只能对类的属性来进行污染不能够污染类的方法。
先看给的源码
from sanic import Sanic import os from sanic.response import text, html import sys import random import pydash # pydash==5.1.2 # 这里的源码好像被admin删掉了一些,听他说里面藏有大秘密 class Pollute: def __init__(self): pass app = Sanic(__name__) app.static("/static/", "./static/") @app.route("/*****secret********") asy ...
ctfshow原谅杯
原谅4源码
<?php isset($_GET['xbx'])?system($_GET['xbx']):highlight_file(__FILE__);
发现xbx可以rce
ls 发现
index.php yuanliang_4_xxx.zip
并且flag在/目录里面
直接cat发现不行
我们ls /bin目录
/bin 目录是 Unix/Linux 系统中的一个重要目录,它存放着许多常用的可执行文件(二进制文件)。这些文件通常是系统管理员或普通用户经常使用的基本命令和应用程序
最终发现sh rm ls 这三个命令可以执行
sh是一个轻量级的shell,相比于bash等更高级的shell,它提供了更基础的功能。但它仍然是许多系统管理任务的首选shell。
明显让我们用sh来做题目
sh也可以像cat一样读取文件内容但是有一点不同
[root@iZbp1g5j7wkdznqpfv918wZ ctf]# cat Gu0f3n.txtGu0f3n[root@iZbp1g5j7wkdznqpfv918wZ ctf] ...