PYTHION知识总结和assert利用剑蚁登录

1.pep8:PEP8是一种编程规范,内容是一些古纳与如何让你的程序更具可读性的建议

2.pickling和unpickling:pickle模块读入任何python对象,将它们转换成字符串,然后使用dump函数将其转储到一个文件中----这个过程叫做picking。反之从存储的字符串文件中提取原始python对象的过程,叫做unpickling

3.python装饰器:python装饰器是python中的特有变动,可以使修改函数变得更容易

4.python的命名空间:在python中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作–这就是命名空间。它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象

5.pass语句:pass是一个在python中不会被执行的语句,在复杂语句中,如果一个地方需要暂时被留白,它常常被用于占位符

6.unittest:在python中,unittest是python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等的功能

7.构造器:构造器是实现迭代器的一种机制。它功能的实现依赖于yield表达式,除此之外它跟普通的函数没有两样

8.doc string:python中文档字符串被称为docstring,它在python中的作用是为函数、模块和类注释生成文档

9.负索引:python中的序列索引可以是正也可以是负。如果是正索引,0是序列中的第一个索引,1是第二个索引,(-1)是最后一个索引,(-2)是倒数第二个索引

10.CSRF:CSRF 是伪造客户端请求的一种攻击,CSRF 的英文全程是Cross Site Request Forgery,字面上的意思是跨站点伪造请求

11.浅拷贝与深拷贝:在python中,对象赋值实际上是对象的引用。浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变,而深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

12.将一个数字转换成一个字符串:可以使用自带函数str()将一个数字转换成字符串。如果你想要八进制或者十六进制数,可以用oct()或hex()

13.内存管理:python的内存管理是由私有heap空间管理的。所有的python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才能对它进行操作。为python的heap空间分配内存是由python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员使用。python有自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用
14.tuple和list的转换:以list作为参数将tuple类初始化,将返回tuple类型
以tuple作为参数将list类初始化,将返回List类型

15.生成随机数:

在python中用于生成随机数的模块是random,在使用前需要导入import:

random.random():生成一个0-1之间的随即浮点数
random.uniform(a,b): 生成[a,b]之间的浮点数
random.randint(a,b):生成[a,b]之间的整数
random.randrange(a,b,step):在指定的集合[a,b)中,以step为基数随机取一个数
random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等
16.mysql数据库分区、分表:

分表可以通过三种方式:mysql集群、自定义规则和merge存储引擎。
分区有四类:
RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区

LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择

HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含Mysq中有效的、产生非负整数值的任何表达式

KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供自身的哈希函数。必须有一列或多列包含整数值
17.MVC/MTV框架:MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起。MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义有些许不同

18.__new__和__init__:

__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值

__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法

也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数
剑蚁登录: 
此处同样采用上文提到的墨者学院文件上传漏洞靶场进行蚁剑使用体验,与冰蝎不同的是,蚁剑没有单独的蚁剑木马,它采用的是跟中国菜刀一样原始的一句话木马:
使用中国蚁剑配置木马连接信息(此处暂不理会编码器和解码器的设置,后面再单独谈,暂选默认即可):
蚁剑具有“代理设置”功能,此处为了直接使用 BurpSuite 观察蚁剑与服务端(被上传一句话木马的受害主机)的通信过程的数据包,我们启用下蚁剑的代理功能(不启用代理的话可直接使用 WireShark 抓包观察也行):
开始使用蚁剑连接木马,开启文件管理功能:
 打开靶机的虚拟终端
此时可以在 BurpSuite 上捕抓到对应的通信数据包:
数据包头“cmd”是木马的连接密码

Python中,`assert`是一个内置的错误处理语句,用于在程序执行过程中进行条件检查。如果`assert`后面的条件为真,那么程序会正常执行下去。如果条件为假,那么程序会引发一个`AssertionError`异常。这对于调试和测试非常有用,因为它可以帮助你找出代码中的错误或不符合预期的地方。 以下是如何在Python中使用`assert`的基本示例: ```python def function_under_test(): # 这里是你要测试的代码 assert condition, "Error message" # 调用函数并测试 function_under_test() ``` 在上面的例子中,如果`condition`为假,那么程序将引发一个`AssertionError`异常,并附带你提供的错误消息"Error message"。 注意:在生产环境中使用`assert`语句通常是不推荐的,因为它可能会阻止程序的正常执行。通常,你会在开发和测试阶段使用它,以帮助发现和修复错误。 另外,值得注意的是,由于Python的异常处理机制,断言不会阻止正常的控制流程(如if或while语句)。断言只是用来检查某个条件是否为真,如果条件为假,则引发一个异常。因此,断言通常用于调试和测试目的,而不是用于控制流程。 例如: ```python def function_under_test(): # 这里是你要测试的代码 x = 10 / 0 # 这将引发一个除零错误 assert x > 0, "Error message" # 断言用于检查x是否大于0 # 在这个例子中,断言会引发一个AssertionError异常,但是函数仍然会执行剩余的代码 ``` 这段代码将引发一个除零错误(由于分母为零),但是断言将会阻止这个错误导致整个函数调用失败。断言只是用来检查某个条件是否满足,如果条件不满足,则引发一个异常并继续执行剩余的代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值