HTTP Requests相关

· 阅读约 2 分钟

GET和POST的区别?

  • GET直接写在url里面,比如?var1=value1
  • POST需要把头改成POST 然后在Body中写

image-20260616045124755

这里的wllm=1就是用的GET,id=5用的post

注意,Body中不能有额外的回车,否则会当成Body的内容

还需要加上Content-Type: application/x-www-form-urlencoded,告诉服务器Body 里的内容是 key1=value1&key2=value2 这种形式

MD5绕过

原理:php弱类型,如果用==连接 那么会将str转为int再比较

解决方式:把==换为===

0e开头弱比较绕过

PayloadMD5值 (16进制)备注
QNKCDZO0e830400451993494058024219903391最经典的绕过字符串之一
2406107080e462097431906509019562988736854另一个常用字符串
s878926199a0e545993274517709034328855841020注意字符串末尾带字母“a”
s155964671a0e342768416822451524974117254469同上,属于sa系列
s214587387a0e848240448830537924465865611904同上
s1091221200a0e940624217856561557816327384675同上
s1885207154a0e509367213418206700842008763514同上
s1502113478a0e861580163291561247404381396064同上
s1836677006a0e481036490867661113260034900752同上
s1665632922a0e731198061491163073197128363787同上
0e2159620170e291242626940419845973139586249特殊字符串:本身与它的MD5值相等
QLTHNDT0e405967825401955372549139051580备选字符串
PJNPDWY0e291529052894702774557631701704备选字符串
NWWKITQ0e763082070976038347657360817689备选字符串

双重MD5 0e开头

Payload第一次MD5值第二次MD5值
7r4lGXCH2Ksu2JNT3BYM0e269ab12da27d79a6626d91f34ae8490e48d320b2a97ab295f5c4694759889f
CbDLytmyGm2xQyaLNhWn0ec20b7c66cafbcc7d8e8481f0653d180e3a5f2a80db371d4610b8f940d296af
770hQgrBOjrcqftrlaZk0e689b4f703bdc753be7e27b45cb36250e2756da68ef740fd8f5a5c26cc45064

适用场景:比较逻辑中使用了 md5(md5($str))

数组绕过

PHP中使用 md5()sha1() 函数,参数为string类型,会返回NULL,导致NULL=NULL

科学计数法与自身比较

适用场景:出现 $a == md5($a)

md5(0e215962017)=0e291242626940419845973139586249