会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 数字型注入和字符型注入的区别!

数字型注入和字符型注入的区别

时间:2026-10-17 06:31:37 来源:烟消火灭网 作者:焦点 阅读:141次

数字型注入和字符型注入,数字本质上是型注型注同一类漏洞的两种变体,但它们触发的入和入前提条件、利用方式和绕过手法完全不同。字符直接说结论:数字型注入靠“闭合查询”,区别字符型注入靠“闭合引号”。数字这个区别决定了你payload的型注型注写法,也决定了你绕过WAF的入和入思路。

拿一个真实案例开刀。字符某后台登录接口,区别参数是数字`id`,查询语句大概是型注型注`SELECT * FROM users WHERE id = $id`。攻击者输入`1 AND 1=1`,入和入页面正常返回;输入`1 AND 1=2`,字符页面空白。区别这就是数字型注入的典型特征——参数被直接拼进SQL语句的数字位置,不需要任何引号包裹。你输入的内容就是数字本身,所以攻击者可以随意追加逻辑运算。这种注入写payload最省心,直接空格加条件就行。

字符型注入就麻烦多了。假设同一个接口改成`WHERE username = '$name'`,你输入`admin`,实际查询是`WHERE username = 'admin'`。这时候你输入`admin AND 1=1`,SQL会把它当成一个完整的字符串,根本不会执行`AND`后面的逻辑。要突破,必须先把前面的单引号闭合掉。典型的payload是`admin' OR '1'='1`。看到区别了吗?数字型注入不需要考虑引号配对,字符型注入必须精确控制引号的数量和位置,否则整条SQL直接语法报错。

更微妙的差异在于注释符的使用。数字型注入里,如果查询后面还有其它条件,比如`WHERE id = $id AND status = 1`,你注入`1 OR 1=1`会导致整个条件恒真,但如果你只想注释掉后面的`AND status = 1`,数字型注入可以用`--`注释符,也可以用`#`。字符型注入则必须先把引号闭合,再注释掉末尾的引号。比如`admin'-- -`,这里的`--`后面必须跟一个空格(MySQL要求),否则注释不生效。这种细节坑过无数新手。

绕过WAF时,两者的策略也天差地别。数字型注入因为不涉及引号,WAF的规则通常针对`AND`、`OR`、`UNION`这些关键字做过滤,你可以用`&&`、`||`替代逻辑运算符,或者用内联注释`/*!50000AND*/`混淆。字符型注入则多了一层引号过滤的麻烦。很多WAF会直接拦截单引号,这时候你就得想别的招——比如用`\`转义掉引号,或者利用宽字节注入(GBK编码下`%bf%27`绕过转义)。这些手法对数字型注入完全是多余的。

还有个容易忽略的点:数字型注入通常出现在`id`、`page`、`age`这类整数参数上,但有些开发者会把数字参数用引号包起来,比如`WHERE id = '$id'`,这时候它实际上变成了字符型注入。判断方法很简单——输入`1'`如果报错,说明是字符型;输入`1'`如果正常返回,说明是数字型。这个测试步骤我建议你每次遇到数字参数都做一遍,因为很多CMS框架会自动给参数加引号。

最后说个实战观察。SQLMap这类工具能自动识别注入类型,但手工注入时,字符型注入的payload长度通常比数字型长好几倍,而且更容易触发WAF的请求体大小限制。如果你在渗透测试中遇到字符型注入,尽量用报错注入或者时间盲注,因为联合查询需要控制列数,而字符型注入的引号闭合已经够呛,再叠加UNION的列数对齐,很容易把自己绕晕。数字型注入则相反,UNION注入是首选,因为不需要处理引号,只要确认了列数就能直接拖数据。

(责任编辑:休闲)

相关内容
  • 学校防范非法宗教渗透工作实施方案
  • 荆州市长江河道管理局通信总站
  • struts2框架漏洞
  • 传奇网站劫持举报
  • 漏洞扫描品牌有哪些
  • 加拿大28玩家群
  • html博客网页代码
  • 正规黑客私人接单
推荐内容
  • 渗透剂价格渗透剂生产厂家翔邦化工
  • 以下几条描述中哪一条不属于职业的含义
  • 刷qq会员永久网站
  • 印度高清免费在线观看
  • webbench压力测试
  • jboss和tomcat区别