攻机:172.16.90.107
    image.png

    靶机:172.16.90.109
    image.png

    直接看登陆界面源代码,并进行分析
    image.png
    $_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值,收集来自 method=”get” 的表单中的值

    在这里,将收集到的’usernm’变量赋值给了$username,将收集到的’passwd’变量赋值给了$password

    mssql_connect()是一个用于PHP连接SQL Server数据库的函数

    整个函数的返回值为布尔类型的变量,如果连接数据库成功,布尔类型的变量的值就为真,否则为假
    这里将这个布尔类型的变量赋值给了$conn这个变量!

    接下来,如果$conn的值为假,!$conn的值就为真,注意这里面!是“非”的意思

    mssql_select_db()为
    选择数据库的函数,要想让这个函数返回值为真,前提是存在名称为users的数据库**才行

    后面创建了一条SQL语句,值为GET形式参数username和password传送的值

    然后对这个SQL语句进行了查询,是就输出,不是就报错

    进行加固

    image.png
    如果在数据库中查询到了相应的结果,则mssql_fetch_object返回值不为空,否则为空

    使用if语句判断mssql_fetch_object返回值,不为空执行下面语句,为空报错

    在判断输入的密码是否与数据库中账户对应用户是否正确,正确跳到正确界面,否则报错

    所以这里只对用户名进行了判断,还是可以输入正确账号,然后密码处进行注入

    再次加固
    image.png

    对输入的数据进行了addslashes,添加反斜杠,让其成为“数据”

    如果数据中包含&、 直接替换为\%和\,让其成为“数据”