Python之eval()函数危险性浅析


Posted in Python onJuly 03, 2014

一般来说Python的eval()函数可以把字符串“123”变成数字类型的123,但是PP3E上说它很危险,还可以执行其他命令!

对此进行一些试验。果然,如果python写的cgi程序中如果使用eval()而非int()来转换诸如年龄这样的输入框中的内容时是非常危险的。不仅可以看见列出系统的全部文件,还可以执行删除文件,察看文件源代码等危险操作!

试着写了个程序,想把本地的脚本文件同过这样的形式一行一行的写到服务器的某个文件里,可最后失败在无法输入换行符"/n",在提交的语句里只要有换行符,就会出现EOL的出错提示,换了编码方式还是没能成功。
 
网页里有一个提交名字的窗口,这里只是以改它为例,否则名字是不会用eval函数转换的,不过年龄到是很容易出问题。这个文件(http://localhost/tutor4.html)导入了os。

line1 = "Hello, %s." % eval(form['user'].value)

(1)

os.system('del * /q') #删除当前目录下所有文件(不包括文件夹)。

os.system调用当前系统的命令(如windows)

/q
指定强制状态。不提示您确认删除。

(2)若删除文件夹,使用rmdir

/s
删除指定目录和所有子目录以及包含的所有文件。使用 /s 来删除目录树。

/q
在安静模式中运行 rmdir。不经确认即删除目录。

os.system('rmdir d:/workspace /s/q')

(3)列出所有文件os.system('dir')。因为成功执行了dir命令后,系统返回0,所以看到的返回内容只能是Hello,0.而在服务器上,倒是真的列出来了,如果有日志,可能被发现。提交os.system('dir >dir.txt'),那么访问http://localhost/dir.txt那么所有的文件和文件夹都暴露了,想看源代码吗?如果再使用os.system('type target.py').命令如果成功完成同样会返回Hello, 0.的。难道再放进一个文件,再访问那个文件吗?open('target.py').read()

由此,可以在列出和察看其他文件夹里面的内容了。

如果没干别的坏事,那么可删除dir.txt以免被人发现了。os.system('del dir.txt /q')

导入os并执行命令:

__import__('os').system('dir >dir.txt')
Python 相关文章推荐
python正则分组的应用
Nov 10 Python
python目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
ptyhon实现sitemap生成示例
Mar 30 Python
Python实现快速多线程ping的方法
Jul 15 Python
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
Python random库使用方法及异常处理方案
Mar 02 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
深入探讨opencv图像矫正算法实战
May 21 Python
python的绘图工具matplotlib使用实例
Jul 03 #Python
python绘图库Matplotlib的安装
Jul 03 #Python
Python实现全局变量的两个解决方法
Jul 03 #Python
Python实现端口复用实例代码
Jul 03 #Python
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 #Python
采用python实现简单QQ单用户机器人的方法
Jul 03 #Python
centos系统升级python 2.7.3
Jul 03 #Python
You might like
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Python API自动化框架总结
2019/11/12 Python
python 实现视频 图像帧提取
2019/12/10 Python
Python tkinter和exe打包的方法
2020/02/05 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
EJB发布WEB服务一般步骤
2012/10/31 面试题
怎么写好自荐信
2013/10/30 职场文书
大学生军训感想
2014/02/16 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
银行金融服务方案
2014/06/11 职场文书
开展读书活动总结
2014/06/30 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
工程部岗位职责
2015/02/10 职场文书
个人德育工作总结
2015/03/05 职场文书
员工手册编写范本
2015/05/14 职场文书
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python