怎么做dj网站,做旅游网站需要的背景,电子商务主要干嘛,网页qq属于什么一#xff0c;类型。
1.弱比较
php中的和在进行比较时#xff0c;数字和字符串比较或者涉及到数字内容的字符串#xff0c;则字符串会被转换为数值并且比较按照数值来进行。按照此理#xff0c;我们可以上传md5编码后是0e的字符串#xff0c;在…一类型。
1.弱比较
php中的和在进行比较时数字和字符串比较或者涉及到数字内容的字符串则字符串会被转换为数值并且比较按照数值来进行。按照此理我们可以上传md5编码后是0e的字符串在比较时php语言会将0e开头的数据认为是科学记数法而后面的数据会被当做0。
例如axxxbxxxx
240610708:0e462097431906509019562988736854 QLTHNDT:0e405967825401955372549139051580 QNKCDZO:0e830400451993494058024219903391 PJNPDWY:0e291529052894702774557631701704 NWWKITQ:0e763082070976038347657360817689 NOOPCJF:0e818888003657176127862245791911 MMHUWUV:0e701732711630150438129209816536 MAUXXQC:0e478478466848439040434801845361
2.强比较
php中的在比较时先判断字符串类型是否相同再比较值。
数组绕过md5不能加密数组在加密数组的时候会返回NULL如果设置没有判断变量类型或内容就可以使用因此强弱比较都是可以使用数组绕过的。
ega[]1b[]2
二示例
[SWPUCTF 2021 新生赛]easy_md5弱
1.包含有一个flag.php的文件然后 get传参namepost传参password当name和password的值不等但是他们的md5值相等时就会输出flag否则输出wrong 2.数组绕过 3. 0e绕过 [BJDCTF 2020]easy_md5sql弱强
1.打开环境提交查询后在地址栏出现password输入内容。 2.bp抓包重放后发现hint: select * from admin where passwordmd5($pass,true) 3.绕过ffifdyop
4.得到一个新的页面看源码get传参a和b的弱比较数组绕过或0e绕过
数组绕过 ?a[]1b[]2 0e绕过 ?axxxxbxxxx 5.得到一个新页面强比较post传参param1和param2。 post传参 数组绕过param1[]aparam2[]b得到flag [SWPUCTF 2022 新生赛]奇妙的MD5sql弱强
1.开始的绕过——ffifdyop 2.弱比较 3. 强比较post传参wqh和dsy [UUCTF 2022 新生赛]funmd5(暂缓)
1.打开环境是一段代码
preg_replace 用于尝试替换掉可能的 0e 形式的字符串但替换后的字符串并未被重新赋值给 $md5。preg_match 用于检查 $md5[0] 是否包含 0e.$sub 的赋值在 if(isset($md5)) 块之外是无效的. 还有一种.txt文件类型的有待讨论
ffifdyop——详解
select * from admin where passwordmd5($pass,true)
md5在此处是一个函数语法为md5(string,raw)
string必需规定要使用的字符串。raw可选 默认不写为FALSE。32位16进制的字符串TRUE。16位原始二进制格式的字符串
当raw项为true时返回的这个原始二进制不是普通的二进制01而是 or6\xc9]\x99\xe9!r,\xf9\xedb\x1c
32位16进制字符串将MD5加密得到的128 位长度的值以每4位为一组分为32组每组以转换为16进制进行转换得到一个32位的字符串。也就是md5加密。即md5的raw为true时该函数的输出是原始二进制格式会被作为字符串处理
构造一个语句使sql语句永恒为真
布尔型判断时以数字开头的字符串会被当做整型数要单引号括起来闭合语句egpassword‘xxx’ or ‘1xxxxxxxxx’那么就相当于password‘xxx’ or 1 也就是password‘xxx’ or true当xxx为纯数字时就可以不用引号
目标要找一个字符串取32位16进制的md5值里带有276f7227这个字段的加上数字部分
最终想要得到一个可以绕过md5的值就要有以下要素
1. or 该符号对应的16进制是 276f7227
2. 在276f7227这个字段后面紧跟一个数字除了0就是1-9对应的asc码值是49-57转化为16进制就是31-39最终形式为276f722731-39
3.最终xxxxxx276f722731-39这样形式的md5值,但是因为md5的特性要把这个从md5解密出来需要庞大的计算因此一般不会去另找。