Access注入–Cookie注入
SQL注入回顾:网络安全笔记-99-渗透-SQL注入
知识点
- Cookie注入常见吗?
老一点的ASP网站常见,PHP看版本,因为高于5.2以上的php版本他的$_REQUEST将不再接受cookie传参 - COOKIE注入时为什么要删除URL内的id传参
因为它传参进去会有一个输出,cookie里我们也传参了一个id数值,他会优先接受GET的传参,具体也是要看语言的,我测试过,PHP会优先接受Cookie传参. - 为什么可以cookie注入
因为在这里接受参数的时候使用了REQUEST,他可以接受get 和POST 和 COOKIE的传参 - 为什么没用到information_schema
access数据库里没有系统自带表,只能猜 - 不能查information_schema怎么得知表名
可以靠爆破和尝试一些常用表名(例如:news、admin、user) - 为什么cookie注入里查找回显点语句后要加上from admin
因为access数据库不支持select 1,2,3 这样的语句,他必须要跟表名 - sqlmap如何进行cookie注入
Sqlmap可以提高检测等级来进行cookie注入(检测等级3及以上,要指定参数)
还可以抓包,在Cookie后面打个*就可以了 - 在无法查询系统自带库的时候如何获取表名
可以burp抓包爆破查询表名,因为表名的命名一般都有规则
and exists(select * from xxx) - 为什么我写的语句放入Cookie无效,SQL注入无效
因为Cookie需要进行一次URL编码才会有效果
access数据库没有库名,只有表名。
exists()函数中的结果集有数据则为真,否则为假,可以用来判断表名。
注入点判断
id处可以进行数学运算,判断此处存在注入点。
判断列数
通过order by 判断出有10列。
判断回显点
在判断回显点的时候发现过滤了关键字。
寻找其他注入点
通过抓包发现,在cookie处存在注入点。
因为:
在cookie出添加id字段,然后把url里的id字段删除,发现页面会根据cookie处的id数显示正常的页面。
通过exists函数判断存在的表名–admin。可以通过爆破获得。
access数据库不支持select 1,2,3…这样的语句方式,它必须跟表名才能正常查询。
cookie字段需要经过url编码。
再次判断回显点
id=-17 union select 1,2,3,4,5,6,7,8,9,10
经过url编码后:
-17+union+select+1%2c2%2c3%2c4%2c5%2c6%2c7%2c8%2c9%2c10+from+admin
回显点为:2,3,7,8,9
猜字段名
继续使用exists函数猜字段名。
;id=171+and+exists(select+username+from+admin)
;id=171+and+exists(select+password+from+admin)
以上两句页面均正常显示。
可以得到字段名:username,password
获得数据
-17+union+select+1%2cusername%2cpassword%2c4%2c5%2c6%2c7%2c8%2c9%2c10+from+admin
-17 union select 1,username,password,4,5,6,7,8,9,10 from admin
数据:admin:b9a2a2b5dffb918c
将密码进行md5解密:
然后找后台。