简单测试发现是整数型注入,然后这题还是整数型注入
1;show databases;
1;show tables;
发现有flag表
1;show columns from Flag;#
到这里就没有思路了
看wp看到三条payload:
*,1
select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag
前置知识:
当 sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数
当 sql_mode 没有设置 PIPES_AS_CONCAT 时 (默认没有设置),|| 就是逻辑或,相当于OR函数
第一条payload是大佬猜到了源码的sql查询语句为:
select $_GET[‘query’] || flag from flag
这种方式拼接出来那就是select *,1||flag from Flag
这句的意思就是 从flag表中查询所有数据,当字段名为1或者flag的时候
1和任意字符串或数字使用 ||连接 的值都为1,所以可以成功执行
需要注意的是,数据库里面没有名称为1这个字段,这样查询会临时自动生成一个新的名称为1的列,里面的内容也全部是1
第二条payload就是利用前置知识里面的
思想是把"||"变成字符串连接符,而不是或
再看payload发现赛题还是有源码泄露的 : index.php.swp 不过这题复现没有