Response.Write("<li><a href="+page.PageAddress+">"+page.PageName+"</a></li>");
If "page.PageAddress" is "Manage_pages/ConfirmUser.aspx" then that's a relative url, ie relative to the current page, so "Manage_Pages" is a level below the current page. If you're on the home page this is "Manage_pages/ConfirmUser.aspx" as you'd expect. However when you're on ConfirmUser then the page is considered a child of that folder, so "Manage_pages/Manage_pages/ConfirmUser.aspx" which is what you're seeing.
What you want is an absolute reference that is always interpreted as from the root of the site and that can be done at it's simplest like
Response.Write("<li><a href=/"+page.PageAddress+">"+page.PageName+"</a></li>");
I added a "/" to the front of the url and that turns your url into "/Manage_pages/ConfirmUser.aspx" which looks for the Manage_pages folder from the root of the website no matter where you are.
There are better ways though such as using Page.ResolveUrl or there are things like
VirtualPathUtility.ToAbsolute Method (String) (System.Web)[
^]
your code will also have problems if there are spaces in your url. I would do all this work at the point that the list of urls is generated, do work on them to make sure they are absolute then rather than writing this code on the aspx page.