postgre的like有个特性,不好解释直接上例子
1SELECT * FROM "public"."testtable" WHERE name like 'fl%\'
当like字符串结尾有\的时候,如果前面的字符串能在数据库里匹配到内容(且被匹配的字符串还有剩余)就会报错ERROR: LIKE pattern must not end with escape character,如果没匹配到就不报错(猜测是因为匹配没执行到\,所以不报错)
例如这么一个数据库
id
name
code
pass
1
flag{12
遇见个死难注的站,一个引号报错俩引号正常,但是各种payload瞎几把注就是注不出来,没招了找开发要了源码,拼的sql大概是这样:
1select SQL_CALC_FOUND_ROWS id,title,name,tags, MATCH (title, tags) against ( '+参数' IN BOOLEAN MODE ) AS score FROM content where MATCH (title, tags) against ( '+参数' IN BOOLEAN MODE ) ORDER BY score DESC limit 0,1