原文:
https://rafipiun.medium.com/how-i-got-easy-for-sql-injection-bug-7ff622236e4c
废话不多说,直接开始复现。
第一步:先注册一个账号
第二步:跟随指引到达这个页面

第三步:这个URL长这个样子:
https://redacted.com/user/activation/xxx/1325589
1325589是我的ID,国际惯例,搞个单引号试试,看看有没有SQL注入。但是没有啥反应。
第四步:如果你仔细看这个页面,你会发现”Resend Activation Link”按钮,然后我就点了一下,用burpsuite截断了这个请求。
第五步:截断的请求长这个样子:

响应包让我重定向到
https://redacted.com/user/resendactivation/xxx/1325589/?smsg=green
第六步:我修改了这个请求,在ID那添加了个单引号,请求就变成这个样子。
https://redacted.com/resend/activation/1325589'

我被重定向到
https://redacted.com/signup_page/xxx
第七步:修改请求包,添加 --+-,响应变成了这样

响应变成了最初的样子,这看起来很像是一个SQL注入。
第八步:现在我编辑这个请求,添加order by 5像这样。

响应结果为False,说明没有5列。
第九步:
尝试order by 4----> False
第十步:
尝试order by 3 ---> True

看起来有3列。
第十一步:
是时候用”union select”了

我被重定向到
https://www.redacted.com/user/resendactivation/xxx/3/?smsg=green
3字段可以显示出来。
第十二步:
现在让我们尝试在3位置,进行Sql注入。

成功得到用户。
译者按:
经典的SQL手注。如果是在CTF环境里,大家肯定可以成功注入。但是如果在实战环境里,这个网站放着你面前,你能发现这个注入嘛?True和False跳转到不同的页面,而且可以回显。作者通过一步一步的分析,成功发现了这个SQL注入点。大家在挖企业核心资产的时候,仔细看仔细分析,才能发现别人发现不了的点。
本文迁移自知识星球“火线Zone”