当前位置:   article > 正文

POST注入和HEAD注入_php post 命令注入

php post 命令注入

目录

1、注入攻击的本质

2、SQL注入两个关键条件

3、GET和POST传参的区别

4、POST概述

5、注释与万能密码

6、sqlmap做post注入有两种方法

7、清除缓存

8、head注入

9、在本机搭建演示环境的时候,如何抓本机(127.0.0.1或者localhost)的包

10、head注入与网页记录的关联(涉及报错注入)

11、关于Referer

12、代理服务器

13、group有长度限制

14、如何跑head注入?


1、注入攻击的本质

注入攻击的本质,是把用户输入的数据当作代码执行。

2、SQL注入两个关键条件

(一)用户能够控制输入;

(二)原本程序要执行的代码,拼接了用户输入的数据。

3、GET和POST传参的区别

(一)GET和POST都是传参方式,区别在于GET是会显示在URL栏里的,POST不会;一个传输的数据有上限,一个可以传输比较大的数据。

(二)分类可以根据不同的类型分类,如果按照传参方式分类SQL注入:GET、POST、HEAD(COOKIE)

4、POST概述

(一)POST注入和普通的注入(联合查询)是没有区别的,它只是根据传参方式不同来判断类型。

(二)POST注入的核心在于框,有框就可以尝试下是否存在注入;

(三)GET可以直接传递参数,POST更多是存在于框,因为框代表着交互点,像登录框、查询框等各种一般都是通过POST进行传参的,当然这句话也不是必然,我们举一个baidu的例子;

像这样在URL栏可以看到的是GET传参;

各种框,一般来说都是POST传参,但不绝对,比如上面的baidu首页的例子就不是POST传参;

5、注释与万能密码

(一)注释:只有Mysql数据库#可以注释,但-- qwe基本上常见的数据库都可以用;在POST注释里#可以直接注释,但是在GET注释里不能够直接注释。

(二)万能密码:a' or 1=1 -- qwe,只有Mysql数据库#可以注释,但-- qwe基本上常见的数据库都可以用;

(三)万能密码可以用,说明一定是POST注入;万能密码不可以用,不代表它不是POST注入;

联合查询 

这时候发现union select 1,2,3页面没有回显,union select的核心是把union select前面和后面的语句的结果拼在一起 ,正常情况下前面语句的优先级会高于后面的语句,所以说前面的语句有输出的时候,后面就没有东西输出了,所以我们要把or 1=1删掉,因为没有or 1=1,a这个字段是不存在的。

找输出点;

 查表名,下面这两条语句都可以查到表名;

a' union select 1,table_name,3 from information_schema.tables where table_schema=database()  limit 0,1 #
a' union select 2,3,table_name from information_schema.tables where table_schema=database()  limit 0,1 #

查字段

通过order by查询到有3个字段,但是flag表里只有2个字段,所以只能查到2个; 

获得flag;

a' union select 1,id,flag from flag limit 0,1 #

6、sqlmap做post注入有两种方法

(一)--form

先测试是否有传参,再去看这个页面上有哪些form表单传参;

 查询到post注入和联合查询注入;

 列库:--dbs; 

 (二)-r

有的时候做渗透测试,会遇到一种状况,比如说,这个注入点在你登陆之后才有,说明你不登陆不行,它这个注入点是在用户的修改密码那里有,或者用户的个人资料修改那里有,如果在那些地方有的话,就只能通过-r来做,因为访问那个页面需要有COOKIE,直接写-u或者--form是没有COOKIE的,但是你抓了个数据包用-r去跑,你的那个数据包是有COOKIE的,所以说它可以免去很多的问题,比如说你跑的是一个用户中心,你登陆了,你必须得登陆才能访问到那个页面,然后那个页面存在sql注入,你要跑出来要怎么跑呢,那就得用-r去抓一个数据包,来进行一个跑包。

首先随意输入密码账号;

 跑到一个数据包;

在文件目录下新建一个txt;

将跑出的数据包复制到新建的txt里;

并且用*号标注出要跑的地方,比如说要跑username就加个*号,*代表你要跑这个地方,要记得保存;

然后在当前的目录里打开cmd,因为1.txt只有当前目录能访问到,其他的目录是访问不到的,毕竟没有加入环境变量;

特别注意,要把文件扩展名勾上,这样的避免出现扩展名重复输入的状况;

 在文件的当前目录下打开的cmd;

输入语句:sqlmap.py -r +文件名,有时需要加上python运行环境的版本号

python之所以要加上版本号,是因为重命名了python的名字,原来的名字统一都是python,但是有一些工具会出现python高版本运行不了的情况,这时候就用到python2.7版本,win10系统默认执行最高版本的python,所以要指定版本来运行,只能重命名python名字,以此区分开python版本;

可以直接将文件拖入cmd,也可以直接输入文件名,两种做法都可以;

 检测到存在POST注入;

7、清除缓存

清除缓存可以输入--flush-session语句;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/863180
推荐阅读
相关标签
  

闽ICP备14008679号