美文网首页
Sqli-Labs:Less 35 - Less 36

Sqli-Labs:Less 35 - Less 36

作者: Hyafinthus | 来源:发表于2018-08-14 18:17 被阅读0次

Less 35

基于错误_GET_数字型_addslashes()_宽字节注入

这关很调皮,数字型查询根本不需要在乎是否被addslashes()
一切回到了第一关,最初始的注入方式。
但还是有存在的必要的,能启发我们思考:当我们面对一个一无所知的网站时应怎么分析后台

0x01. 判断注入类型

这关有错误回显,所以比较容易判断:

http://localhost:8088/sqlilabs/Less-35/?id=1'

可以从 MySQL 错误信息中直接看出是数字型查询,判断没有其他过滤后是最简单最初级的注入。

0x02. 数字型or被过滤

而没有错误回显时,我们又应该怎么判断是数字型注入还是引号被过滤呢?

在能分辨出正确回显和错误回显(有固定字符串)时,id=1正确回显,尝试id=1'id=1"

  • 若两者都正确回显:很可能是被过滤引号
  • 若两者都错误回显:很可能是数字型查询
  • 若一正确一错误:基本可确定是字符型查询

更多的分析等完结后的注入方式分析。

Less 36

基于错误_GET_单引号_字符型_mysql-real-escape-string()_宽字节注入

0x01. PHP过滤函数

mysql_real_escape_string()这个函数是 PHP 过滤的常见函数,在 Less 17 中有详细介绍:

mysql_real_escape_string()函数

mysql_real_escape_string(string,connection)

参数 描述
string 必需,规定要转义的字符串
connection 可选,规定MySQL连接。如果未规定,则使用上一个连接

mysql_real_escape_string()函数转义 SQL 语句中使用的字符串中的特殊字符:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回FALSE

本函数将字符串中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于mysql_query(),可使用本函数来预防数据库攻击。

0x02. 注入过程

注意:在《注入天书》中提到:

但是因 MySQL 我们并没有设置成 GBK,所以mysql_real_escape_string()依旧能够被突破,方法和上述addslashes()是一样的。

在使用mysql_real_escape_string()时,若想防范这种问题,需要将 MySQL 设置为 GBK:
Mysql_set_charset(‘gbk’,’$conn’)

原理暂不清楚,有待学习。

%bb%27%bb%5c%5c%27均可绕过'过滤,有错误回显可以看出是单引号闭合,剩余步骤同 Less 32。

相关文章

网友评论

      本文标题:Sqli-Labs:Less 35 - Less 36

      本文链接:https://www.haomeiwen.com/subject/lzgebftx.html