返回列表 发帖

[讨论]关于ASP中在线解压缩rar文件的讨论~!望积极参与~!

以下是从网上找来的代码,似乎存在明显的安全隐患~!
个人认为,自己写个DLL来解压比较好。但不知道unrar.dll都有些什么函数可调用,望明白人指点。
先谢为敬~!
要想实现这种功能,首先要得到Rar程序的解压缩核心文件支持(可以下载WinRar软件,再把其中的WinRar.exe文件单独“拿”出来。),并且还需要Windows操作系统自带的cmd.exe程序(这个程序用来执行WinRar.exe文件。操作系统自带的,NT内核的操作系统可以在操作系统安装目录下的System32文件夹下找到它;Windows 9X的操作系统可以在操作系统安装目录下的System文件夹下找到它。),如图1。然后把它们上传到同一目录中。建立asp文件,见以下代码:
  1. <%
  2. Dim a,b,Main,Shell,Runing,Runcode,Cmd,comm,fso
  3. Main="d:\chencheng\rar\" `上传后Winrar.exe和cmd.exe后的路径。
  4. a=Server.mappath("rar")&"\" ';解压rar文件后的存放路径。
  5. b=Server.mappath("rar\homepage.rar") ';要解压的rar文件,把其中homepage.rar修改为需要解压缩的文件。
  6. Set Shell = Server.CreateObject("WScript.Shell")
  7. Runing= "d:\chencheng\rar\cmd.exe /c "&Main&"Winrar.exe x -t -o+ -p- " ’设置运行解压缩的命令。
  8. Cmd=Run&b&" "&a
  9. Runcode = Shell.Run(Cmd,1, True)
  10. %>
复制代码

[讨论]关于ASP中在线解压缩rar文件的讨论~!望积极参与~!

[这个贴子最后由chinanic在 2007/01/24 01:13pm 第 1 次编辑] 自己折腾了一下,把winrar的rar.exe小小的利用了一把。]
  1. Upfiles.asp
  2. <%
  3. Dim sFileName,sUnFilePath,ReNum
  4. ';取得当前文件所在路径
  5. sFilePath=Request.ServerVariables("PATH_TRANSLATED")
  6. ';去掉后面的文件名得到真正的路径
  7. sFilePath=Left(sFilePath,Len(sFilePath)-InstrRev(sFilePath,"\"))
  8. ';加上上传文件名
  9. sFileName=sFilePath & "UploadFiles\aaa.rar"
  10. ';解压缩路径
  11. sUnFilePath=sFilePath & "UploadFiles"
  12. ';调用组件
  13. Set UR=Server.CreateObject("AMS.UnRar")
  14. ReNum=UR.UnRarFuc(sFileName,sUnFilePath)
  15. ';返回值判断
  16. if ReNum=0 then
  17. Response.write "解压失败~!"
  18. else
  19. Response.write "解压成功~!"
  20. End if
  21. %>
复制代码
打开VB,新建工程AMS,添加类模块UnRar,代码如下 咳,记得把rar.exe拷到D盘根目录(什么?你只有一个C盘。。我!·#!·#!·##¥#·¥·#)
  1. Function UnRarFuc(ByVal sFileName As String, ByVal sUnFilePath As String) As Integer
  2. Dim ReNum As Integer, strExec As String
  3. strExec = "D:\rar.exe e " & sFileName & " " & sUnFilePath
  4. ReNum = Shell(strExec)
  5. UnRarFuc = ReNum
  6. End Function
复制代码

TOP

[讨论]关于ASP中在线解压缩rar文件的讨论~!望积极参与~!

[这个贴子最后由chinanic在 2007/01/23 08:28pm 第 2 次编辑]

咳,再补充一点。站点不能给程序文件的执行权限,只要给rar.exe一个Everyone执行权限即可。。否则就会出现Invalid procedure call or argument 错误。
嗯。这样一来比网上的那什么用WSH执行CMD调用WINRAR.exe的貌似要安全一点。。
偶这只不过是烂砖一块,期待美玉中。。。

TOP

[讨论]关于ASP中在线解压缩rar文件的讨论~!望积极参与~!

蛙蛙,网上公布的那个溢出漏洞是针对GUI界面的WINRAR的。并且是2.9版。。。嘿嘿。。
不过谁能保证后面的版本没漏洞呢~!
在发现后及时换就行了。。:16:

TOP

[讨论]关于ASP中在线解压缩rar文件的讨论~!望积极参与~!

下面引用由d#amnyou2007/02/20 02:03am 发表的内容:
不对吧,权限是"继承"的,而那个rar.exe本身的权限只是Everyone

偶的磁盘一般都只保留system和Adminstrators。。。嘿嘿
风之子的的确是美玉一块。。。。 :20: 可怜偶不懂。。

TOP

返回列表 回复 发帖