python知识总结及assert利用蚁剑登录

python知识总结:

  1. if name == “main”:

我们将它当做应用程序的入口,name将不再是它本身模块名称,而强制改为__mian__

if name == ‘main’ 就相当于是 Python 模拟的程序入口。Python 本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 name 的值。

  1. self用法:

由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:

class Student(object):
def init(self, name, score):
self.name = name
self.score = score

__init__方法的第一参数永远是self,表示创建的类实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。(2)、有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器会自己把实例变量传进去。

  1. 生成随机数:

在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):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等

  1. new__和__init

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

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

也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

  1. Unicode字符串
    字符串有一个编码问题。

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。

如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u’…'表示,比如:

print u’中文’

中文

注意: 不加 u ,中文就不能正常显示。

Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效。

assert利用蚁剑登录
assert()格式

<?php
 
    $str = $_GET['input'];
    assert($str);
 
?>

eval()和assert()的区别:

eval()   函数中参数时字符串
         值必须加上 ;结尾
例:eval( 'phpinfo() ;' ) ;
 
assert() 函数中参数为表达式(或者为函数)
         把传入的参数直接当成PHP代码执行,不需要以 ; 结尾,当然加上也可以。

开始使用蚁剑连接木马,开启文件管理功能:
打开靶机的虚拟终端
此时可以在 BurpSuite 上捕抓到对应的通信数据包:
数据包头是木马的连接密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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异常,但是函数仍然会执行剩余的代码 ``` 这段代码将引发一个除零错误(由于分母为零),但是断言将会阻止这个错误导致整个函数调用失败。断言只是用来检查某个条件是否满足,如果条件不满足,则引发一个异常并继续执行剩余的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值