欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

python 执行系统命令的多种方式

来源:本站整理 作者:佚名 时间:2018-08-21 TAG: 我要投稿

本片文章总结下在python 的环境下的执行系统命令的方式,本文Python版本为2.7,Python3 不是很熟,因为很多好的工具都是基于Python2的,比如Impacket,Empire(flask),所以我也很少用Python3 写东西。如果对Python3熟练的同学,可以对本文的涉及到的东西进行相应的变换,大家还有什么更多的方式可以留言交流。
 
0x01 python function
exec('import os ;os.system("ls")')
先说下exec函数,从文档 可以知道,参数是UTF-8,Latin字符串,打开的File对象,以及代码对象或者Tuple。字符串类型会被解析为Python 代码然后执行,代码对象就是直接执行,File对象根据EOF来解析,然后执行代码,Tuple对象可以去查看文档中所说的情形。

eval('__import__("os").system("ls")')
Eval函数,从文档中的定义为:eval(expression[, globals[, locals]]) ,第一个表达式参数是String类型,globals必须是字典类型,在没有globals和locals参数时,就会执行表达式。如果缺少__builtin__ 库时,会在执行表达式之前把当前指定的 globals 复制到全局的globals。但是Eval也是可以执行代码对象的。比如eval(compile('print "hello world"', '', 'exec')) ,在用到exec作为参数时函数会返回None 。

这个例子:读取文件,把参数加入到globals对象中。
    def from_pyfile(self, filename, silent=False):
        filename = os.path.join(self.root_path, filename)
        d = imp.new_module('config')
        d.__file__ = filename
        try:
            with open(filename) as config_file:
                exec(compile(config_file.read(), filename, 'exec'), d.__dict__)
        except IOError as e:
            if silent and e.errno in (errno.ENOENT, errno.EISDIR):
                return False
            e.strerror = 'Unable to load configuration file (%s)' % e.strerror
            raise
        self.from_object(d)
        return True
system('ls')
subprocess.Popen('ls')
os.popen('ls')
 
0x02 python lib
Python 都是通过引入不同的库,来执行其中的函数。关于Import 的各种方式,可以看看这里的总结。我这里直接列出Payload:
>>> [].__class__
type 'list'>
>>> [].__class__.__base__
type 'object'>
>>> [].__class__.__base__.__subclasses__
type object at 0x55a9f3d5cb80>
>>> [].__class__.__base__.__subclasses__()
[type 'type'>, type 'weakref'>, type 'weakcallableproxy'>, type 'weakproxy'>, type 'int'>, type 'basestring'>, type 'bytearray'>, type 'list'>, type 'NoneType'>, type 'NotImplementedType'>, type 'traceback'>, type 'super'>, type 'xrange'>, type 'dict'>, type 'set'>, type 'slice'>, type 'staticmethod'>, type 'complex'>, type 'float'>, type 'buffer'>, type 'long'>, type 'frozenset'>, type 'property'>, type 'memoryview'>, type 'tuple'>, type 'enumerate'>, type 'reversed'>, type 'code'>, type 'frame'>, type 'builtin_function_or_method'>, type 'instancemethod'>, type 'function'>, type 'classobj'>, type 'dictproxy'>, type 'generator'>, type 'getset_descriptor'>, type 'wrapper_descriptor'>, type 'instance'>, type 'ellipsis'>, type 'member_descriptor'>, type 'file'>, type 'PyCapsule'>, type 'cell'>, type 'callable-iterator'>, type 'iterator'>, type 'sys.long_info'>, type 'sys.float_info'>, type 'EncodingMap'>, type 'fieldnameiterator'>, type 'formatteriterator'>, type 'sys.version_info'>, type 'sys.flags'>, type 'exceptions.BaseException'>, type 'module'>, type 'imp.NullImporter'>, type 'zipimport.zipimporter'>, type 'posix.stat_result'>, type 'posix.statvfs_result'>, 'warnings.WarningMessage'>, 'warnings.catch_warnings'>, '_weakrefset._IterationGuard'>, '_weakrefset.WeakSet'>, '_abcoll.Hashable'>, type 'classmethod'>, '_abcoll.Iterable'>, '_abcoll.Sized'>, '_abcoll.Container'>, '_abcoll.Callable'>, type 'dict_keys'>, type 'dict_items'>, type 'dict_values'>, 'site._Printer'>, 'site._Helper'>, type '_sre.SRE_Pattern'>, type '_sre.SRE_Match'>, type '_sre.SRE_Scanner'>, 'site.Quitter'>, 'codecs.IncrementalEncoder'>, 'codecs.IncrementalDecoder'>]

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载