背景:测试站点是ASP的程序,经测试 shownews.asp?id=61存在注入
GET方法 shownews.asp?id=61 and 4>1 返回警告
改成POST方法,仍然出现警告
最后,测试cookie注入,如下图,在控制台提交document.cookie="id="+escape("61 and 4>1"),新增cookie项id,然后再次访问shownews.asp 发现返回正常也没有出现注入警告。
到这一步你可以手工注入,也可以使用多年前的“寂寞的刺猬”开放的中转注入或者使用sqlmap。
这里我使用的就是sqlmap
sqlmap -u http://www.test.com/shownews.asp --cookie "id=61" --level 2
很快就跑出了结果
最后分析一下所谓的原理
服务端使用了$id = $_REQUEST[‘id’]来获取参数值,然后来看一下w3chool对ASP REQUEST对象的解释:
问题出现在,程序员没有考虑到恶意用户会通过cookie来提交参数,因此没有调用防注入程序来过滤cookie部分,从而导致cookie注入的发生。
再来说一下那条sqlmap命令,level值至少为2sqlmap才会测试cookie,看官方文档的说明: