SQL注入之post注入
本人记录这些为了学习的同时,能够有很好的记录,所谓好记性不如烂笔头,同时发布出来,也是希望大家有朋友学习到这里想上网搜索一些东西,以便借用和探讨一些问题,总之,不断学习!!
自我修养:没有一个系统是安全的
理解
$_GET 变量接受所有以 get 方式发送的请求,及浏览器地址栏中的 ? 之后的内容,执行后地址栏会显示出来。
$_POST 变量接受所有以 post 方式发送的请求,执行后地址栏不会显示出来。
$_REQUEST 支持两种方式发送过来的请求,即 post 和 get 它都可以接受,显示不显示要看传递方法,get 会显示在 url 中(有字符数 限制),post 不会在 url 中显示,可以传递任意多的数据(只要服务器支持)。
实例讲解
这里我们讲第11关,less-11,如图:
这里很清楚就知道我们不是在地址栏上进行输入了。那么我们先随便输入一个试一下,会发现,地址栏并没有显示出我们要输入的操作,那么我们就可以知道这不是get型了。
这里我们引入一个工具burpsuite,我们将拦截的数据放入repeater模块,根据经验不断的尝试,构建攻击模块。
这里我们构造攻击代码(name):’ or 1=1 – 。(password):(随便都行),发现登陆成功了,显示了一个用户名和一个密码,为什么密码输入什么都行呢?因为我们通过代码审计,可以知道,他后台查询语句是 where 用户名=“” and 密码=“” 的形式,我们利用-- 就完全注释了后面,所以密码无所谓了。
补充:
这里我们再讲一下,为什么数据库里面有那么多的数据,却唯独显示我们登陆的是Dumb,
*这里涉及一个函数:mysql_fetch_array :【mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有
返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。】,因为这个函数,再加上Dumb用户在第一行,我们就知道为什么我们唯独显示登陆的是Dumb了。*
今天的学习就到这里,持续学习中