某高校的一网站存在sql注入,本来以为扔给sqlmap分分种能搞定,万万没想到post请求中带2个参数__VIEWSTATE和__EVENTVALIDATION里面有/和+这些字符,当我直接把这些参数扔到sqlmap去跑之后发现sqlmap会对/前加上\
网页上的原始请求参数
直接扔给sqlmap后发现结果是没有注入点,让我严重怀疑人生了
sqlmap的参数
结果
当时我觉得那个的确是有注入点的,但是为什么sqlmap没有发现呢?等我把日志级别调整到-v5的时候发现。
大箭头就是和我手动注入的payload一样的,但是看下面日志返回是302.继续看下面2个小箭头%5C%2F(实际是\/),原来sqlmap把参数中带/的自动做转译了
中间省略N个小时,最后通过--csrf-token='__EVENTVALIDATION'和--eval='__VIEWSTATE=__VIEWSTATE.replace("\\","")'成功注入成功。
这里要说下这个参数--csrf-token,可以避免/被转译,他是用来获取交页面中hidden之类的元素,找个页面有2个参数需要获取,但是这个参数我用了多种姿势只能提取一个,在查看官方手册的时候发现还有一个
--evel可以用Python来做一些参数的处理。
|