渗透之sql注入----二次注入

目录

二次注入的原理:

实战:

第一步:找注入点

找漏洞:

注入大概过程:

第二步:开始注入


二次注入的原理:

        二次注入是由于对用户输入的数据过滤不严谨,导致存在异常的数据被出入数据库中;当我们从数据库中二次使用该数据时就会产生注入行为。

        二次注入也是较为常见的注入方式。

实战:

我们在sql靶场进行操作,本次的实战是sql靶场的第二十四关:

第一步:找注入点

我们通过查看源码可知,此关卡共有一下几个php页面。

经过大致的解读代码,这几个页面中可能存在注入点的php页面为pass_change.php,login.php,login_create.php三个页面。这三个页面的功能分别为修改密码,登录,创建新用户。

找漏洞:

我们观察这三个页面的php关键代码:

login.php:

login_create.php:

pass_change.php:

我们发现在我们输入的关键字段都被函数:mysql_real_escape_string()过滤了。这个函数的意思是对用户输入的敏感字符进行转义(在关键字符上连接一个反斜线进行转义),我们去php官网查看:

缺陷:该函数虽然可以对用户输入的进行过滤,但是在写入数据库中时并不会将其一并代入数据库。那么我们就可以从此点入手。

列子:我们注册一个用户,用户名为admin'#

去数据库中查看:发现特殊字符一并存入了数据库。

我们继续观察,发现在pass_change.php中的sql语句中会使用用户名来筛选并修改密码,但是该用户名是直接从数据库中取出的,并没有使用mysql_real_escape_string()函数进行过滤,那么我们就可以发现本次的注入点就在这里。

注入大概过程:

我们可以找到一个用户的用户名,但是我们并不知道它的密码。之后进入注册页面注册新的用户名,在进入密码修改界面修改密码。这就是本次注入的大概流程。

第二步:开始注入

1):假设我们已经知道了一个用户,叫做secure

2):进入注册页面:

注册一个用户名叫:secure'#    的用户

3):我们使用自己注册的用户登录,进入密码修改界面:

修改新密码为:aaaaaa

pass_change.php代码分析:

本次执行的sql代码为:

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username';

这里的用户名为本次登录的用户名,并且直接从数据库中读取,没有进行过滤,当前的用户名为:

secure。

实际执行的代码为:如下

通过sql语句可以看到,我们实际上修改的为secure用户的密码。

4):使用我们修改的密码aaaaaa,来进行登录secure用户。

成功的登入了secure用户。

5):说明我们成功的使用sql注入,利用漏洞拿到了secure用户的密码,本次实验圆满成功。本次实验就是典型的二次注入。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值