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函数进行报错注入,需要注意两张函数的格式
1' and extractvalue(1,concat(0x7e,(select group_concat(username,password) from users limit 0,1),0x7e))#