sqli-labs ————less -11(POST注入)

前言

从这一关开始,我们就进入到了POST注入的世界了。在接下来的几关中我们将陆续介绍关于POST注入的方法以及技巧。

POST

post是一种数据提交方式,它主要是指数据从客户端提交到服务器端,例如,我们常常使用的用户登录模块、网站的留言板模块等,在这些功能模块中我们提交的数据都是以post的方式提交的服务器的,之后再由服务器端进行验证。

Less-11

关卡界面:


我们首先提交一个admin试试看会有什么样的效果:


从提交之后的结果中,我们可以发现我们提交的数据在页面当中进行了回显,输入了怎样的数据就输出怎样的数据了!我们这里不妨来看看源代码,看看具体的流程:


这里的传入的参数“username”、password是用单引号引起来的,而且使用and来进行组合,那么这里我们究竟如何构造payload呢?
无论是post还是get最后都会在后台形成SQL语句之后再执行,所以我们可以想想之前get的各种注入,这里我们是否可以用“注释”、“单引号”这些来构造呢?我们不妨试试:

username:admin' --

password:  aaa



报错信息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'aaa' LIMIT 0,1' at line 1

从错误信息中,我们可以从错误中分析到程序对参数进行单引号的处理。

这里我们不妨可以在输入框中输入万能密码来试试:

username:admin' or '1'='1 --

password:aaa


之后的回显结果为:


这里解释一下,当我们提交username=admin' or '1'='1 -- ,password=aaa的时候,在后台形成的语句为:

@$sql="SELECT username, password FROM users WHERE username='admin'or '1'='1 --' and password='aaa' LIMIT 0,1";

在“--”之后的内容都会被注释掉,前面的内容因为or 1=1恒成立,所以语句就成立,我们此时就可以以用户admin登录。接下来我们可以用之前在get注入中使用到的语句来代替or 1=1来进行注入。

username:' union select 1,database() -- 
password:aaa



从这里我们可以得到数据库名为security


猜你喜欢

转载自blog.csdn.net/fly_hps/article/details/80277701