oracle宽字节注入,SQL 手工注入总结,必须收藏!

203a74671816587852584a061416772f.png

虽说目前互联网上已经有很多关于sql注入的神器了,但是在这个WAF横行的时代,手工注入往往在一些真实环境中会引起尤为重要。此处主要把以前学过的知识做个总结,不会有详细的知识解读,替代查询手册的形式,更多以后的复习与查阅,文中内容可能会存在错误,望师傅们斧正!

0x01 Mysql手工注入

1.1联合注入

1.2报错注入

每个一个报错语句都有它的原理:

exp()报错的原理:exp是一个数学函数,取e的x次方,当我们输入的值大于709将报错,然后 取反它的值总会大于709,所以报错。

updatexml()报错的原理:由于updatexml的第二个参数需要Xpath格式的字符串,以 开头的内容不是xml格式的语法,concat()函数为串联连接函数而不符合规则,但嵌套内的执行结果以错误的形式报出,这样就可以实现报错注入了。

这里需要注意的是它加了连接字符,导致数据中的md5只能爆出31位,这里可以用分割函数分割出来:

1.3盲注1.3.1时间盲注

时间盲注也叫延迟注入一般用到函数sleep()BENCHMARK()还可以使用笛卡尔积(尽量不要使用,内容太多会很慢很慢)

一般时间盲注我们还需要使用条件判断函数

我们一般喜欢把分割的函数编码一下,当然不编码也行,编码的好处就是可以不用引号,常用到的就有ascii()hex()等等

1.3.2布尔盲注

1.4插入,删除,更新

插入,删除,更新主要是用到盲注和报错注入,这种注入点不建议使用sqlmap等工具,会产生大量垃圾数据,一般这种注入会出现在编码,ip头,留言板等等需要写入数据的地方,同时这种注入不报错一般较难发现,我们可以尝试性插入,引号,双引号,转义符\让语句不能正常执行,然后如果插入失败,更新失败,然后深入测试确定是否存在注入

1.4.1报错

1.4.2盲注

1.5二次注入与宽字节注入

二次注入的语句:在没有被单引号包裹的sql语句下,我们可以用16进制编码他,这样就不会带有单引号等。

二次注入在没有二进制的情况比较难发现,通常见于注册,登录恶意账户后,数据库可能会因为恶意账户名的问题,将admin'-+误认为admin帐户

宽字节注入:针对目标已达到一定的防护,单引号转换为 ,mysql转换 编码为 ,宽字节中两个字节代表一个汉字,所以把 加上 就变成了一个汉字“运”,使用这种方法成功绕过过转义,就是所谓的宽字节注入

0x02 Oracle手工注入

2.1联合注入

2.2报错注入

2.3盲注

2.3.1布尔盲注

既然是盲注,那么肯定涉及到条件判断语句,Oracle除了使用if else结束,如果这种复杂的,还可以使用encode()函数。

语法:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,更改值);

该函数的含义如下:

2.3.2时间盲注

可使用DBMS_PIPE.RECEIVE_MESSAGE('任意值',延迟时间)函数进行时间盲注,这个函数可以指定延迟的时间

0x03 SQL Server手工注入

3.1联合注入

3.2报错注入

3.3盲注

3.3.1布尔盲注

3.3.2时间盲注

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值