LosFormatter - ViewState deserialize
Bài này sẽ là một số note của mình về LosFormatter và exploit ViewState deserialize
Demo LosFormatter
using System;
using System.IO;
using System.Text;
namespace LosFormatter
{
internal class Program
{
[Serializable]
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void SayHello()
{
Console.WriteLine("hello");
}
}
public static void Main(string[] args)
{
System.Web.UI.LosFormatter losFormatter = new System.Web.UI.LosFormatter();
using (MemoryStream memory = new MemoryStream())
{
losFormatter.Serialize(memory, new Person("endy", 20));
memory.Position = 0;
Person p = (Person)losFormatter.Deserialize(memory);
p.SayHello();
Console.WriteLine(Encoding.UTF8.GetString(memory.ToArray()));
}
Console.ReadKey();
}
}
}




ViewState
Demo ViewState








Case
.NET ver
MAC enabled
Encryption enabled
Require
Case 1 và 2: .NET any version and MAC disable








Case 3: .NET version <4.5 and MAC enable


A. Encryption false




B. Encryption true
Case 4: .NET version >4.5 and MAC enable
Bonus
Refer
Last updated