MD5加密后的SQL注入

今天在做 jarvisoj 平台的ctf题目时,遇到一道sql注入题,sql语句是这样的 select * from admin where password=’”.md5($pass,true).”‘

这题的重点在 MD5() 这个函数,这个函数的主要做作用是将给定的字符串进行 MD5 加密,这个函数接收两个参数 一个 str ,是要进行MD5加密的字符,这是必须传入的参数,另一个是 raw ,这是个可选参数,有两个值,true和flash ,默认为 flase ,加密为 32 字符十六进制数 ,true为 规定十六进制或二进制输出格式

题中的 sql 语句MD5()的raw为true,所以传入的字符串在进行 MD5 加密后,在经 hex 编码为 ‘or’<trash> [<trash>为无用字符串] 这样的格式的话,sql语句就成为了 select * from admin where password=’’or’‘ 所以这里的 <trash> 是可控的,所以这里就有了一个注入点

问题在于去哪里找一个 MD5 加密后的经 hex 编码值为 ‘or’ 的字符串 这里提供一个 ffifdyop ,经MD5加密后的值为 276f722736c95d99e921722cf9ed621c 在经 hex 编码后的值为 ‘or’6 所以给 $pass 传入 ffifdyop 即可时sql语句执行,然后得到flag