Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

web中PHP篇解析有误 #795

Open
qNwNp opened this issue Jul 11, 2021 · 10 comments
Open

web中PHP篇解析有误 #795

qNwNp opened this issue Jul 11, 2021 · 10 comments
Assignees

Comments

@qNwNp
Copy link

qNwNp commented Jul 11, 2021

image

@ZeddYu
Copy link
Contributor

ZeddYu commented Jul 23, 2021

确实,这里只是简单的字符串异或而已,字符串本身没有其他特别的意义。删掉中间的那些解释就行:

这段代码一大坨是啥意思呢?因为40个字符长度的限制,导致以前逐个字符异或拼接的webshell不能使用。  
- 这里可以使用php中可以执行命令的反引号 `` ` `` 和 `Linux` 下面的通配符 `?`

- - `?` 代表匹配一个字符
- - `` ` 表示执行命令
- - `" ` 对特殊字符串进行解析

- 由于 `?` 只能匹配一个字符,这种写法的意思是循环调用,分别匹配。我们将其进行分解来看:
+ 我们可以使用字符串进行异或构造其他字符,我们将上述代码其进行分解来看:

@iromise
Copy link
Member

iromise commented Sep 14, 2021

@ZeddYu @qNwNp 我感觉原作者这里应该是专门写的,只是表达可能不太清晰。删掉不太好。

@ZeddYu
Copy link
Contributor

ZeddYu commented Sep 14, 2021

@ZeddYu @qNwNp 我感觉原作者这里应该是专门写的,只是表达可能不太清晰。删掉不太好。

这里真就不是那个意思,只是简单的字符串异或操作,原作者的的意思会让人误解。比如反引号异或问号输出下划线,只是简单的字符串异或,这个字符串没有反引号代表的执行命令的意思,问号也没有代表匹配一个字符的意思,完全可以删掉。或者叫原作者 Review 都可以

@iromise
Copy link
Member

iromise commented Sep 16, 2021

@ZeddYu 我也找不到是谁了。。 @40huo 还记得是谁写的么。。

@StoneMoe
Copy link

@ZeddYu 我也找不到是谁了。。 @40huo 还记得是谁写的么。。

Use git blame

@iromise
Copy link
Member

iromise commented Sep 18, 2021

@StoneMoe Thanks. Using the command directly doesn't give the true result. So I checkout to a very older version and find the author.
@AngelKitty 看一哈?

@40huo
Copy link
Contributor

40huo commented Sep 21, 2021

我觉得可以改掉,^ 的两边加个空格可能更好理解一点 #803

@AngelKitty
Copy link
Member

@ZeddYu @qNwNp 我感觉原作者这里应该是专门写的,只是表达可能不太清晰。删掉不太好。

这里真就不是那个意思,只是简单的字符串异或操作,原作者的的意思会让人误解。比如反引号异或问号输出下划线,只是简单的字符串异或,这个字符串没有反引号代表的执行命令的意思,问号也没有代表匹配一个字符的意思,完全可以删掉。或者叫原作者 Review 都可以

直接去掉会有些突兀,会感觉少了一些东西,比如“为什么能够按照顺序循环匹配进行异或计算”这个原因没有说清楚,这个匹配的规则或者原理最好是能够说明一下比较妥当。这部分在之前写的时候确实是没考虑到你说的这个问题。

@ZeddYu
Copy link
Contributor

ZeddYu commented Sep 24, 2021

OK. 我暂时没有更多精力来处理这个 issue 了,我已经关闭了 PR ,如果有人处理该 issue ,可以参考以上。

@summershrimp
Copy link
Contributor

summershrimp commented Sep 24, 2021

@ZeddYu @qNwNp 我感觉原作者这里应该是专门写的,只是表达可能不太清晰。删掉不太好。

这里真就不是那个意思,只是简单的字符串异或操作,原作者的的意思会让人误解。比如反引号异或问号输出下划线,只是简单的字符串异或,这个字符串没有反引号代表的执行命令的意思,问号也没有代表匹配一个字符的意思,完全可以删掉。或者叫原作者 Review 都可以

直接去掉会有些突兀,会感觉少了一些东西,比如“为什么能够按照顺序循环匹配进行异或计算”这个原因没有说清楚,这个匹配的规则或者原理最好是能够说明一下比较妥当。这部分在之前写的时候确实是没考虑到你说的这个问题。

但这里是一个明显的错误,建议还是改掉,不要误导初学者。

- 这里可以使用php中可以执行命令的反引号 `` ` `` 和 `Linux` 下面的通配符 `?`

- - `?` 代表匹配一个字符
- - `` ` 表示执行命令
- - `" ` 对特殊字符串进行解析

- 由于 `?` 只能匹配一个字符,这种写法的意思是循环调用,分别匹配。我们将其进行分解来看:

这里的?, `, " 没有任何特殊含义,就是单纯的字符

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants