type
status
date
slug
summary
tags
category
icon
password
0x00 理解GET与POST提交方式的区别
get是将提交信息展现在url中提交,是我们能够直接看到的,而post提交方式是将信息在数据包中传递,post提交通过将表单内容各个字段放在html header中传递我们用户无法看到传递过程,get是向服务器获取数据,而post则是向服务器传递数据,get传送的数据量较小,不能大于2KB。 post传送的数据量较大,一般被默认为不受限制。get提交比较起来比post方便,但是post提交方式比get更加的安全稳固,重点需要理解post提交方式用户提交的信息在数据包里面,我们在外无法直接利用,故可以采用抓取数据包达到我们的目的。
0x01 抓取get请求包与post请求包对比
1)抓取GET包分析
2)抓取post包分析
很明显的我们可以观察到,在get数据包中只有在GET请求方式哪里看到url提交的信息,但是很多时候不能直接利用,在POST数据包我们可以观察到除了在url信息存在提交信息,在最下方可以详细的看到以表单的形式存在的用户提及的信息,这里便是我们能够利用到的位置,但不是绝对的,有时候在url提交的id信息也存在注入,这就要多去尝试了,今天我们这里研究post提交的表单进行sql注入
0x02 利用POST数据包表单sql注入
注入的方式按照常规的注入思维,
需要注意的是,如果是在渗透浏览器实现提交post数据包,在sqlu语句最后的注释符--+提过提交后在数据包里面被转义为--%2B
我们可以通过手动修改数据包再次提交,但是在复杂的环境下不是太方便,第二种方法便是通过bur抓包工具,通过数据包实现注入,防止转义,结果实验发现可以用#代替注释符,这里不会被转义,以上方法都行
0x03 利用报错注入
通过实验发现此处还可以用爆粗注入,利用到updataxml与extractvalue函数进行报错注入,需要注意两张函数的格式
报错注入小结:
0x00 sqli-labs-less5-6考点
注入之前首先介绍两个函数
extractvalue() :对XML文档进行查询的函数
updatexml()函数与extractvalue()类似,是更新xml文档的函数。
其中database()这个位置函数便是我们注入语句查询的地方,类似与前面的联合查询方式,但是此处应该用连接符and来连接语句,不然会报语法错误
0x01 注入测试
less-6实例
第五关与第六关闭合方式不一样,也可以用报错注入,就不在说明
手工测试完成后,我尝试了使用sqlmap,工具用起来还是比手工方便很多,按照之前文章介绍的使用方法很快便测试完成
0x02 重点理解:
我们可以通过以上查询方式与网站应用的关系 总结出五种注入点产生地方或应用猜测到对方的SQL查询方式
select 查询数据
在网站应用中进行数据显示查询操作
insert 插入数据
在网站应用中进行用户注册添加等操作
delete 删除数据
后台管理里面删除文章删除用户等操作
update 更新数据
会员或后台中心数据同步或缓存等操作
order by 排序数据
一般结合表名或列名进行数据排序操作
0x03 各类型Payload: 靶场pikachu(利用注意修改闭合方式)
pikachu insert 插入数据
pikachu update 更新数据
pikachu delete 删除数据
延时盲注:
- 作者:告白
- 链接:https://www.gbsec.top/article/Post%E6%B3%A8%E5%85%A5-%E6%8A%A5%E9%94%99%E6%B3%A8%E5%85%A5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。