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”是木马的连接密码