per la seconda possibilità ti faccio vedere due metodi, quello del findcontrol e uno un po piu OOP e che preferisco.

nel div della master page ho due label, le popolo entrambe dalla pagina child, la prima usando findcontrol mentre la seconda la bindo ad una proprietà definita a livello di classe nella pagina master.

MASTER PAGE
codice:
<body>
    <form id="form1" runat="server">
    <div>
    <div id="div_dinamico">
        <h3>Contenuto Master Page</h3>
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

        <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
    </div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
CODICE MASTER PAGE
codice:
public partial class Site1 : System.Web.UI.MasterPage
    {
        public string Testo2 { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            Label2.Text = Testo2;
        }
    }
CHILD PAGE
codice:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <h3>Child Page</h3>
</asp:Content>
CODICE CHILD PAGE
codice:
public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Label label1 = Master.FindControl("Label1") as Label;
            if (label1 != null)
                label1.Text = "Testo 1 da Child Page";

            (Master as Site1).Testo2 = "TESTO 2 da Child page"; //necessario il cast a tipo della classe derivata (il nome della masterpage) !
        }
    }