文章目录
web11
打开环境直接给了源码
代码审计一下,
function replaceSpecialChar(
s
t
r
P
a
r
a
m
)
:这是一个自定义函数,它接受一个字符串参数
strParam):这是一个自定义函数,它接受一个字符串参数
strParam):这是一个自定义函数,它接受一个字符串参数strParam。
使用正则表达式 /(select|from|where|join|sleep|and|\s|union|,)/i 来匹配SQL注入攻击中常用的关键字和符号。
使用 preg_replace 函数将这些匹配到的关键字替换为空字符串,即删除这些关键字
if(strlen(
p
a
s
s
w
o
r
d
)
!
=
s
t
r
l
e
n
(
r
e
p
l
a
c
e
S
p
e
c
i
a
l
C
h
a
r
(
password)!=strlen(replaceSpecialChar(
password)!=strlen(replaceSpecialChar(password))):检查用户输入的密码 $password 的长度是否与删除了特殊字符后的密码长度相同。
如果长度不同,说明用户输入的密码包含了被正则表达式匹配的关键字或符号
die(“sql inject error”);:如果检测到密码包含特殊字符,脚本将终止执行并输出错误消息 “sql inject error”
if(
p
a
s
s
w
o
r
d
=
=
password==
password==_SESSION[‘password’]):检查用户输入的密码是否与会话变量 $_SESSION[‘password’] 中的密码相同。 如果密码匹配,输出 $flag 变量的值。
如果密码不匹配,输出错误消息 “error”。
这里我们可以通过session身份绕过漏洞,具体可以看一下这里https://blog.csdn.net/weixin_45653478/article/details/136931052
我们按f12打开开发者工具。
将phpsessid全部删除然后再点击登陆就好了。将session身份验证信息全部删除,找不到身份信息就会显示为空。空=空就可以了。