如何寻找sqli的思路(SQL注入,时间盲注,盲注字典)
何为基于时间的SQLi
主要利用了一些数据库系统中存在的时间延迟,以进行攻击。
具体来说,攻击者会向数据库发送一条带有恶意代码的 SQL 查询语句,这条语句的作用是让数据库系统执行一些操作,比如执行睡眠函数,这样就可以使数据库系统延迟一段时间。攻击者可以通过测量这段延迟来判断数据库的输出是否正确。
假设有一个登录表单,其中有两个字段:用户名和密码。表单提交后,后端代码会执行一条 SQL 查询语句,来验证用户名和密码是否正确。假设这条 SQL 查询语句的形式如下:
SELECT * FROM users WHERE username='$username' AND password='$password';
攻击者可以使用基于时间的SQL 注入攻击来猜测用户的密码。为了探测数据库是否会执行睡眠函数,攻击者可以在密码字段中输入如下恶意代码:
' OR SLEEP(5)=0 --
这条代码会让 SQL 查询语句的形式变成这样:
SELECT * FROM users WHERE username='$username' AND password='' OR SLEEP(5)=0 --';
这条语句会让数据库系统执行睡眠函数,使数据库系统延迟 5 秒。如果数据库系统执行了睡眠函数,那么说明密码是正确的,攻击者就可以猜测出用户的密码。
当然,这只是一个简单的例子,在实际操作中,攻击者可能会使用