相关阅读
视频讲解
相关资源
burpsuite工具
通过burpsuite进行sql批量注入完成密码暴力破解
FoxyProxy
视频中的FoxyProxy插件作用是快速帮我们快速修改浏览器的代理端口,这样就避免每次手动去设置浏览器端口了
Owasp Juice Shop
Owasp Juice shop是视频中进行测试的站点,您可以通过npm的方式进行部署
git clone https://github.com/juice-shop/juice-shop.git
cd juice-shop
npm install
npm start
也可以直接docker部署
docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop
两者最终均需要通过http://localhost:3000
进行访问
原理解释
视频中通过SQL注入的方式登录进网站究竟是什么原理?
用户名输入了admin '--
就成功登录了这是为什么呢
举例
这里面先举个简单的例子进行分析,代码中如果确认登录的方式如下
当账户是admin且密码是password时,两者同时满足便可以登录
SELECT * FROM user WHERE username = 'admin' ADN password = 'password'
如果admin
是admin '--
,则下面的语句会变成
SELECT * FROM user WHERE username = 'admin'-- 'AND password = 'password'
-- '
后面的内容都被注释掉了,意思是只要查询到admin用户就能登陆了,改变了原有表达式的含义
SELECT * FROM user WHERE username = 'admin'
与此类似的还有admin 'or 1=1
、admin '#
,你也可以继续进行分析,最终都将后面密码部分注释掉了,则只需要验证存在admin账户方可登录了!
这些相当于是网站开发者没有注意到的漏洞,但是现在很多开发者都在使用框架了,框架的话会有专门的防sql注入的地方,会对表达式中的特殊符号进行过滤,就没有这么简单了!不过这个思路在很多比较老的业务系统还是很奏效的
juice-shop分析
可以看到登录的时候其实也是调用的sql语句,这里随便输入个'
在网络中就可以看到下面的语句
![图片[1]-黑客是如何利用网站漏洞入侵你的账户-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220302022759487-1024x667-1.webp)
核心登录代码在routes/login.ts
中,如下
models.sequelize.query(`SELECT * FROM Users WHERE email = '${req.body.email || ''}' AND password = '${security.hash(req.body.password || '')}' AND deletedAt IS NULL`, { model: models.User, plain: true }) // vuln-code-snippet vuln-line loginAdminChallenge loginBenderChallenge loginJimChallenge
© 版权声明
THE END
暂无评论内容