SQL注入攻击思路总结
1、
我们都知道sql注入的传参有些是明文的,有些是经过编码或者加密的,所以我们搜索的时候不要仅限于inurl:.php?id=1,可以额外的尝试搜搜1的base64编码值MQ==,即可以搜索inurl:.php?id=MQ==,或者搜索1的md5加密值,即可以搜索inrul:.php?id=a0b923820dcc509a。这样子搜索完,我们可测试的范围就扩大了。此处我就是利用inurl:.php?id=MQ==搜索到了一处存在sql注入的网站。
?sort=price&order=ASC、?orderBy=id&sortDir=DESC; POST 请求体:{"sort":"name","order":"DESC"}(JSON 格式); 参数名关键词:sort、order、orderBy、sortBy、sort_dir、order_dir。
判断注入点
':单引号,常见于字符串插入的地方,尤其是SQL注入。/:斜杠,可能用于路径遍历、注入等。":双引号,常用于字符串拼接。1/1:常用于测试SQL注入的效果,1/1返回真。1/0:常用于测试除零错误,触发数据库报错。and 1=1:常见的SQL注入测试条件,通常返回真,确认注入是否成功。" and "1"="1:类似于``and 1=1,用于测试注入成功与否。and 1=2:尝试返回假的条件(例如,1=2为假),验证是否会导致不同的行为。or 1=1:另一种常用的条件判断,若数据库返回成功则说明注入可行。or 1=:同样是一个条件,可能会触发SQL查询错误。' and '1'='1:注入测试,验证条件是否返回真。+:加号可能用于URL编码或者SQL中拼接字符串。-:减号,用于注释掉SQL中的后续部分。^:异或运算符,有时用于绕过过滤或触发错误。*:星号,可能用于选择所有字段,或作为乘法运算符。%:百分号,可能用于SQL模糊匹配或URL编码。/:除号,常用来触发除零错误等SQL注入。<<, >>:左移右移位操作符,可能用于绕过过滤或触发错误。||:逻辑或操作符,用于组合多个条件。|:按位或操作符,可能用于SQL注入或绕过过滤。&:按位与操作符,常用于某些SQL注入攻击。&&:逻辑与操作符,组合条件判断。~:按位取反操作符,有时用于SQL注入。!:逻辑非操作符,常用于条件判断。@:在某些数据库中用作变量前缀,或用于其他目的。
目标类型优先级:
- 高优先级:中小型网站 / 系统(防护较弱)、政企 / 教育机构的老旧系统、电商 / 论坛类带用户交互的站点(有大量查询接口);
- 中优先级:开放 API 接口的平台、带?id=xxx/name=xxx 等参数的 URL;
- 低优先级:纯静态页面、有 WAF(Web 应用防火墙)且规则严格的大型平台
文件阅读 # 实战 几个比较有意思的SQL注入 # SQL注入新视角:关键词过滤绕过与语法闭合|挖洞技巧 # 记一次伪静态Sql注入的挖掘思路 # 排序注入的一次CNVD以及某次挖掘附带思路分享 SRC挖掘思路及分享