Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示什么&x27;在mysql\u real\u escape\u string()之后,s实际上被传递到服务器_Php_Mysql_Apache_Sql Injection - Fatal编程技术网

Php 显示什么&x27;在mysql\u real\u escape\u string()之后,s实际上被传递到服务器

Php 显示什么&x27;在mysql\u real\u escape\u string()之后,s实际上被传递到服务器,php,mysql,apache,sql-injection,Php,Mysql,Apache,Sql Injection,我正在对一个站点进行代码审查,发现了一个可能的SQL注入漏洞。我应该指出,这是一个CTF练习,所以这可能是一个noob问题。下面的代码查询数据库中的用户名和密码,如果发现两者都匹配,则允许您登录 $username = mysql_real_escape_string((string) $_POST["username"]); $password = md5($_POST["password"]); $query = @mysql_query("SELECT * FRO

我正在对一个站点进行代码审查,发现了一个可能的SQL注入漏洞。我应该指出,这是一个CTF练习,所以这可能是一个noob问题。下面的代码查询数据库中的用户名和密码,如果发现两者都匹配,则允许您登录

    $username = mysql_real_escape_string((string) $_POST["username"]);
    $password = md5($_POST["password"]);

    $query = @mysql_query("SELECT * FROM user WHERE username='$username' AND pwd='$password'");

    if (@mysql_num_rows($query) !== 1) {
        $html = "Your username or password is wrong<br>".ShowLoginForm();
        return;
    } else {
        $html = "Logged in. <a href='index.php'><font color=\"#9CCFEC\">continue</font></a>";
    }
这里的挑战是突破mysql_real_escape_string()语句,要做到这一点,我希望看到在该函数修改输入后,到底传递给服务器的是什么。有办法做到这一点吗?该站点正在Apache上运行。

不知道您“发现”了什么,但您在此处发布的代码片段中没有漏洞

这里的挑战是突破mysql\u real\u escape\u string()语句

任务不可能完成


没有破绽,也没有破绽。继续下一个练习。

不要使用错误抑制运算符(@),因为它会隐藏可能有助于调试代码的错误消息。您还应该始终编写代码,以便它不会生成任何PHP错误,包括通知。
md5()
对于哈希密码是过时的,不应使用。PHP提供和,请使用它们。这里有一些。如果您使用的是5.5之前的PHP版本。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个最适合您。即使使用。没问题-这不是我的代码,就像我说的,这是CTF练习的一部分,它有一些故意插入的漏洞。这里使用的身份验证机制非常糟糕。。。感谢您的输入-快速手指!好的,我从这个反应中猜测mysql\u real\u escape\u string()函数是非常可靠的?在这个特定的例子中,当然是这样。我想知道你还不知道它,因为这似乎是php人唯一知道的事情。你是不是故意给出了一个错误的答案,只是为了取笑
mysql\u real\u escape\u string()
对SQL注入免疫?@dorukayhan继续,给我看一个工作示例,它将破坏这段代码
SELECT * FROM user WHERE username='admin' OR 1=1 '' AND pwd='anyrandomtext'