当前位置: 代码迷 >> 综合 >> sqli-11 基于post提交注入
  详细解决方案

sqli-11 基于post提交注入

热度:61   发布时间:2023-11-27 20:38:49.0

0x00 GET与POST提交方式的不同

get是将提交信息展现在url中提交,是我们能够直接看到的,而post提交方式是将信息在数据包中传递,post提交通过将表单内容各个字段放在html
header中传递我们用户无法看到传递过程,get是向服务器获取数据的形式,而post则是向服务器传递数据,get传送的数据量较小,不能大于2KB。
post传送的数据量较大,一般被默认为不受限制。get提交比较起来比post方便,但是post提交方式比get更加的安全稳固,重点需要理解post提交方式用户提交的信息在数据包里面,我们在外无法直接利用,故可以采用抓取数据包达到我们的目的。

0x01 抓取get请求包与post请求包对比

1)抓取GET包分析
GET数据包
2)抓取post包分析
POST数据包
很明显的我们可以观察到,在get数据包中只有在GET请求方式哪里看到url提交的信息,但是很多时候不能直接利用,在POST数据包我们可以观察到除了在url信息存在提交信息,在最下方可以详细的看到以表单的形式存在的用户提及的信息,这里便是我们能够利用到的位置,但不是绝对的,有时候在url提交的id信息也存在注入,这就要多去尝试了,今天我们这里研究post提交的表单进行sql注入

0x02 利用POST数据包表单sql注入

注入的方式按照常规的注入思维,
需要注意的是,如果是在渗透浏览器实现提交post数据包,在sqlu语句最后的注释符–+提过提交后在数据包里面被转义为–%2B
+被转义为%2B
我们可以通过手动修改数据包再次提交,但是在复杂的环境下不是太方便,第二种方法便是通过bur抓包工具,通过数据包实现注入,防止转义,结果实验发现可以用#代替注释符,这里不会被转义,以上方法都行
注入成功

0x03 利用报错注入

通过实验发现此处还可以用爆粗注入,利用到updataxml与extractvalue函数进行报错注入,需要注意两张函数的格式

1' and extractvalue(1,concat(0x7e,(select group_concat(username,password) from users limit 0,1),0x7e))#

利用extractvalue函数报错注入

  相关解决方案