选择页面的href为: javascript:__doPostBack('PageBarTop','3')
在网页源代码中搜索 __doPostBack 的定义,如下所示:
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft"
> -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$"
.join(":"
;
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
看来这个方法的功能很简单——将事件对象以及参数传入到一个form(document.Form1)
的域中,然后简单的提交这个form。
搜索Form1的定义,如下所示:
<form name="Form1" method="post" action="SearchResult.aspx?myLocIDList=5&isInterView=1" id="Form1">
<input type="hidden" name="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" value="dDwyMTQyM......
...
...
<input name="HidIsClear" id="HidIsClear" type="hidden" />
<iframe id=IFCookie name=IFCookie width=1 height=1 frameborder=no></iframe>
</form>
它的action就是当前网页的地址,而翻页所影响的两个input是隐藏域,我们只要控制这
两个隐藏域对应的参数值即可。我试过在URL中直接加入
&__EVENTTARGET=PageBarTop&__EVENTARGUMENT=8
不过似乎达不到目的——还是只能用模拟Post了。
它的__VIEWSTATE域中存放了Base64编码信息,解开了是这样:
t<214202491;t<p<l<UrlKey;SqlWhere;>;l<myLocIDList=5&isInterView=1;WHERE (job_id
in (Select job_id From searchjobloc Where loc_id in (5)));>>;l<i<0>;>;......
——竟然放了SQL的Where子句在里面,有趣