今天学了几种常见的题目绕过的方式
(1)关于ffifdyop:fifdyop经过MD5加密后为:276f722736c95d99e921722cf9ed621c
再转换为字符串:’or’6<[乱码]>
用途:sql注入中:select * from admin where password=”or’6<乱码>’
相当于select * from admin where password=''or 1
(2)MD5加密以及绕过的方法
源码
if (isset($GET[‘a’]) and isset($GET[‘b’])) { if ($GET[‘a’] != $GET[‘b’]) if (md5($GET[‘a’]) == md5($GET[‘b’])) die(‘Flag: ‘.$flag); else print ‘Wrong.’; }
让a,b值存在并且ab不相等但是经过md5加密之后值相等,有两个方法
- 经过md5加密之后以0e开头的,值都为0,因为0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。于是上网查了一下以0e开头的md5值,下面做一下积累(这些都可以用作比较相等)
s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e848240448830537924465865611904 s878926199a 0e545993274517709034328855841020 s1091221200a 0e940624217856561557816327384675 s1885207154a 0e509367213418206700842008763514 s1502113478a 0e861580163291561247404381396064 s1885207154a 0e509367213418206700842008763514 s1836677006a 0e481036490867661113260034900752 s155964671a 0e342768416822451524974117254469 s1184209335a 0e072485820392773389523109082030 s1665632922a 0e731198061491163073197128363787 s1502113478a 2.数组绕过,md5无法处理数组,都会默认数组为0
那刚刚那道题就可以用数组绕过
a[]=0&b[]=1
(3)sha1()函数的漏洞
和md5数组加密绕过类似,sha1()函数不能处理数组类型,会直接返回NULL,可以通过这一特性来做文章
sha1(),md5()等加密函数,当检测到值为数组时,都会处理为null;
(4)json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。
由于php属于弱类型语言,所以数字和字符串在进行比较时,字符串会转成数字,如果字符串的第一位不是数字,则字符串被转成0。
key={“key”:0}(key是变量)