一道简单的WEB题

打开网址右上角发现管理后台
Mji29S.jpg
打开管理后台发现有登录测试界面
MjiTA0.jpg
打开后台测试界面显示源码

<?php
highlight_file(__FILE__);
if (isset($_POST['username']) && isset($_POST['password'])) {
    $logined = false;
    $username = $_POST['username'];
    $password = $_POST['password'];

    if (!ctype_alpha($username)) {
        $logined = false;
    }
    if (!is_numeric($password)) {
        $logined = false;
    }
    if (md5($username) == md5($password) && $username != $password) {
        $logined = true;
    }
    if ($logined) {
        echo "login succeed! and flag is flag{xxxxxxxxxxxx}";
    } else {
        echo "login failed!";
    }
}
?>

username为纯字母password为纯数字,要获取flag要使logined为真,即username进行md5后的值等于password进行md5后的值且username不等于password。
当字符串240610708跟QNKCDZO做分别md5,得到的md5值为0e打头的,一些语言(PHP)会做隐式转换,当做int类型计算,得到的结果是0,最后导致0==0,判定为true
们尝试用用户名:QNKCDZO 密码:240610708登录等到flag。

添加新评论