$result = $db->query('SELECT * FROM USERS WHERE password="'.$_GET['password'].'"');
if($result->fetchArray()) $step1=true;
$result = $db->query('SELECT * FROM USERS WHERE password=\''.$_GET['password'].'\'');
if($result->fetchArray()) $step2=true;
$result = $db->query('SELECT * FROM USERS WHERE password='.$_GET['password']);
if($result->fetchArray()) $step3=true;这段代码是我为学习目的而做的ctf挑战的一部分,我不太确定如何将这些SQL语句计算为true。
有些想法是做一个insert语句,其中密码将等于注入语句,但我不确定这是否是一个好方法。如果可能的话,我想在不修改后端数据库的情况下获得它。
我并不是真的想要一个直接的答案,但可能需要一些指导。
感谢你的帮助。
编辑:$step1、$step2和$step3都需要计算为true
发布于 2018-04-08 00:59:59
OWASP基金会网站是信息安全主题的丰富来源。
它们的页面被指定为绕过的SQL注入。
您的目标是确保无论查询是如何构造的,结果都是一个<#>true值。
OWASP提供的一个例子如下:
select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(200000,md5(now())))
大多数认真对待他们的数据的网站都有办法保护他们的数据库免受各种类型的注入攻击,一个基本的方法就是输入消毒。
引用:绕过WAF的SQL注入。(2018)。Owasp.org。2018年4月8日从https://www.owasp.org/index.php/SQL_注入_绕行_WAF检索
https://security.stackexchange.com/questions/183192
复制相似问题