logo头像
Snippet 博客主题

SUCTF 2019 EasySQL 1(堆叠注入)

个人比较菜,自己尝试了一会,就直接看wp了
解题过程:
1:
利用其没过滤*,直接用*,1来注入,直接得到flag
不过需要从报错中猜到其sql语句select $_GET['query'] || flag from Flag,其拼接语句是:select *,1||flag from Flag,这句话的意思是,当1为真的时候,直接查询1from flag,这句话的意思是:执行这条查询语句会将表中的所有数据查询出来并且在后面增加一列列名和内容都是1的列,因为后端是只有一个Flag的表,表里只有一个字段flag,也只有一行数据,
2:
利用||,将||作为字符串连接符,因此需要在语句中更改其配置
sql_mode=PIPES_AS_CONCAT时即可
注入语句:1;set sql_mode=PIPES_AS_CONCAT;select 1
拼接后得到:select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag,它会将表中的flag列带出来

总结:学到了MySQL修改sql_mode=pipes_as_concat的用法和适用场景和oracle与MySQL “ || “ 符号的区别

评论系统未开启,无法评论!