<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADeep4_FrameChain</id>
	<title>模块:Deep4 FrameChain - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADeep4_FrameChain"/>
	<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep4_FrameChain&amp;action=history"/>
	<updated>2026-05-13T08:39:48Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep4_FrameChain&amp;diff=939&amp;oldid=prev</id>
		<title>Bot93553：​RCE test</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep4_FrameChain&amp;diff=939&amp;oldid=prev"/>
		<updated>2026-05-09T05:54:27Z</updated>

		<summary type="html">&lt;p&gt;RCE test&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if type(frame) == 'nil' or frame == nil then&lt;br /&gt;
        -- Try to get frame from mw&lt;br /&gt;
        frame = mw.getCurrentFrame()&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    results[1] = &amp;quot;frame_type=&amp;quot; .. type(frame)&lt;br /&gt;
&lt;br /&gt;
    if frame and type(frame) ~= 'nil' then&lt;br /&gt;
        results[2] = &amp;quot;getParent=&amp;quot; .. type(frame.getParent)&lt;br /&gt;
&lt;br /&gt;
        if frame.getParent then&lt;br /&gt;
            local parent = frame:getParent()&lt;br /&gt;
            results[3] = &amp;quot;parent=&amp;quot; .. type(parent)&lt;br /&gt;
&lt;br /&gt;
            if parent and type(parent) ~= 'nil' then&lt;br /&gt;
                local parent_methods = {}&lt;br /&gt;
                for _, m in ipairs({&amp;quot;getTitle&amp;quot;, &amp;quot;preprocess&amp;quot;, &amp;quot;extensionTag&amp;quot;, &amp;quot;callParserFunction&amp;quot;, &amp;quot;expandTemplate&amp;quot;, &amp;quot;getArgument&amp;quot;, &amp;quot;newChild&amp;quot;}) do&lt;br /&gt;
                    if parent[m] then&lt;br /&gt;
                        parent_methods[#parent_methods+1] = m .. &amp;quot;=&amp;quot; .. type(parent[m])&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                results[4] = &amp;quot;parent_methods: &amp;quot; .. table.concat(parent_methods, &amp;quot;, &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
                -- Try parent:getTitle&lt;br /&gt;
                if parent.getTitle then&lt;br /&gt;
                    results[5] = &amp;quot;title=&amp;quot; .. tostring(parent:getTitle())&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                -- Try calling parent:callParserFunction&lt;br /&gt;
                if parent.callParserFunction then&lt;br /&gt;
                    local ok, out = pcall(parent.callParserFunction, parent, &amp;quot;expr&amp;quot;, &amp;quot;2+2&amp;quot;)&lt;br /&gt;
                    results[6] = &amp;quot;callPF(expr)=&amp;quot; .. tostring(ok) .. &amp;quot;:&amp;quot; .. tostring(out)&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                -- Try parent:preprocess&lt;br /&gt;
                if parent.preprocess then&lt;br /&gt;
                    local ok, out = pcall(parent.preprocess, parent, &amp;quot;'''bold'''&amp;quot;)&lt;br /&gt;
                    results[7] = &amp;quot;preprocess=&amp;quot; .. tostring(ok) .. &amp;quot;:&amp;quot; .. tostring(out):sub(1,80)&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                results[3] = &amp;quot;no_parent&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Grandparent&lt;br /&gt;
        if frame.getParent then&lt;br /&gt;
            local parent = frame:getParent()&lt;br /&gt;
            if parent and parent.getParent then&lt;br /&gt;
                local gp = parent:getParent()&lt;br /&gt;
                results[8] = &amp;quot;grandparent=&amp;quot; .. type(gp)&lt;br /&gt;
                if gp and gp.getTitle then&lt;br /&gt;
                    results[9] = &amp;quot;gp_title=&amp;quot; .. tostring(gp:getTitle())&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(results, &amp;quot; | &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
</feed>