Sqli-labs之Less-24

                                                    Less-24

POST型基于存储的二次注入

随意输入

点击:Forgot your password?

翻译:如果你忘记了密码,去黑掉它。

点击:New User click here?

注册用户。

尝试注册一个用户: 用户:test1 密码:test1

翻译:

用户成功
创建
重定向到5中的登录页面......
如果未重定向,请点击右上角的主页(HOME)按钮

尝试注册过后的用户进行登录:

尝试更改用户test1的密码为tese2

从上面的情况中我们可以分析出:

  • 登录界面,具有登录功能,同时有忘记密码注册的链接。
  • 注册界面,具有注册功能。
  • 忘记密码界面,返回一张图片
  • 修改密码界面,登陆成功后,1.显示用户名,2.可以重置密码,3.有登出的链接。
  • 登录失败界面,返回一张图片。

综上,可推断出注入点在更改密码上。

分析下源文件:

这三个文件与数据库进行交互,剩下的五个文件分别对应上述几个显示的界面。

代码审计:

这几个文件出现频率最高的代码是:

session_start()

可参考php手册

session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。

session_start的作用是开启$_SESION,需要在$_SESION使用之前调用。
PHP $_SESION 变量用于存储关于用户会话(session)的信息

接着分析:

1. login.php

PHP mysql_real_escape_string() 函数

定义和用法

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

下列字符受影响:

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

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

语法

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

说明

本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()

可以看到代码对username和passseord的特殊字符进行了转义,想要在这里进行注入就得采取“绕过”,但这不是我们这道题想要的解法,我们就当这里无法注入好了,也就是说在登录页面login.php处无法进行注入。

登录成功后创建sessioncookiesession存储username,但session是建立在服务器上的对象,所以无法获取;cookie只是个登录标记,几乎没有任何用处。(会话15分钟后过期)

2. login_create.php

明天继续写。。。。

 

发布了43 篇原创文章 · 获赞 40 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39934520/article/details/105620978
今日推荐