sql注入练习3(二次注入)

通常网站开发者可能会十分注意与用户发生交互的地方,自然这些地方就很少会有 SQL 注入漏洞了。而开发者对从数据库查询出来的信息可能十分信任,而这就是攻击者的机会所在——即便从数据库查询出来的数据也不是可靠的。

这个注入还挺有意思~~
原理:比如在注册的地方。。。对用户输入进行了转义,用户注册了一个admin' -- -
(无法注入了) 但是把它直接插入了sql中,取出来的时候仍能用admin登录
举个栗子:
更新密码语句:

update users set password='test' where username='admin' -- -'

似乎要改变的是admin’ – - 账户的密码,实际上改了admin账户的密码
如果我知道username是admin的话,我就可以尝试一下二次注入拿下密码了

sqli-labs less24 SecondOderInjections

1.在登录处各种尝试,没有注入成功-----要试一下二次注入
2.注册新用户
sql注入练习3(二次注入)_第1张图片

这里插入一张有意思的tip
sql注入练习3(二次注入)_第2张图片
如果忘记管理员密码的话,go hack it!
emmm 也就是可以通过二次注入登录管理员界面的
3.使用admin’ – -登录
会出来修改密码的界面(我的不行。。。logged-in.php文件没配置好????)
修改后用admin登录即可

本关为二次排序注入的示范例。二次排序注入也成为存储型的注入,就是将可能导致sql注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发sql注入。二次排序注入思路:

  1. 黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。

  2. 服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。

  3. 黑客向服务端发送第二个与第一次不相同的请求数据信息。

  4. 服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。

  5. 服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。

此例子中我们的步骤是注册一个admin’#的账号,接下来登录该帐号后进行修改密码。此时修改的就是admin的密码。

Sql语句变为UPDATE users SET passwd=“New_Pass” WHERE username =’ admin’ # ’
AND password=’ ,也就是执行了UPDATE users SET passwd=“New_Pass” WHERE
username =’ admin’

你可能感兴趣的:(#,sql注入)