Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

网页认证get请求 #1

Open
Darkoutput opened this issue Sep 4, 2022 · 23 comments
Open

网页认证get请求 #1

Darkoutput opened this issue Sep 4, 2022 · 23 comments

Comments

@Darkoutput
Copy link

我抓到部分代码了,发现是get请求的,大佬可以帮忙看下如何修改相对应部分的参数吗,谢谢啦

@Darkoutput
Copy link
Author

我抓到部分代码了,发现是get请求的,大佬可以帮忙看下如何修改相对应部分的参数吗,谢谢啦

可以有偿帮忙,大佬

@timeflyingaway
Copy link
Owner

一个小建议,下次在网上提问,直接以会有人帮你为前提把问题一次性问完,该发的东西都发出来,不要像聊天一样还要先等别人回复,不要一小段话分几次发

@timeflyingaway timeflyingaway reopened this Sep 4, 2022
@Darkoutput
Copy link
Author

一个小建议,下次在网上提问,直接以会有人帮你为前提把问题一次性问完,该发的东西都发出来,不要像聊天一样还要先等别人回复,不要一小段话分几次发

好的,谢谢大佬提醒,这是我截取的一个页面,https://wwp.lanzouy.com/ibCCN0b1s4ni
密码:dlnb
这是它的相关js代码,大佬帮忙看看要怎么修改,谢谢谢谢!image

@timeflyingaway
Copy link
Owner

你这个啊,我估计不是get方法请求的,可能是post或者直接通过js实现的,也就是页面本身在登陆时没有跳转。当然,也可能是你的抓包不正确导致的。你可以再试一下,进入登录界面后,完成输入账户名、密码和其他选项,在点击登录前,按F12,选择“网络”,确认这个时候下面是空的没有任何记录,这个时候再点击登录记录数据。一般来说按登录之后第一个才是真正的。

@Darkoutput
Copy link
Author

你这个啊,我估计不是get方法请求的,可能是post或者直接通过js实现的,也就是页面本身在登陆时没有跳转。当然,也可能是你的抓包不正确导致的。你可以再试一下,进入登录界面后,完成输入账户名、密码和其他选项,在点击登录前,按F12,选择“网络”,确认这个时候下面是空的没有任何记录,这个时候再点击登录记录数据。一般来说按登录之后第一个才是真正的。

大佬,我按照你的办法重新试了试,发现就这个有变化,其他的登陆前后没变化,这是它的相关代码[https://wwp.lanzouy.com/i0kTL0b1unri] 您看看,给点建议
4314bd4cb9a46a814fe86408a82819d

39dcd912ec107c3719b32be765af8ee

@timeflyingaway
Copy link
Owner

都说了,第一个 才是。以及根据你这个IsReback=1,所以估计(只是估计,因为我看不到你里面具体的信息)你没有真正的登录,而是直接读取了缓存登陆了。你可以尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备。
另外你不需要给我看响应,响应是服务器返回给你的,代码也不需要发给我。我需要看到你这个a70.htm的信息,尤其是请求方法和状态代码之类的,都截图给我。

@Darkoutput
Copy link
Author

都说了,第一个 才是。以及根据你这个IsReback=1,所以估计(只是估计,因为我看不到你里面具体的信息)你没有真正的登录,而是直接读取了缓存登陆了。你可以尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备。 另外你不需要给我看响应,响应是服务器返回给你的,代码也不需要发给我。我需要看到你这个a70.htm的信息,尤其是请求方法和状态代码之类的,都截图给我。

大佬再看看,a70.html这个是没有登录前才有,登录之后就变成了1.html
登陆前的a70.html截图
8d80d0a7a315f9b50c18c6e55bfcd9c

3468f17f86faea978ed2ecd8388677f

3092cdbd7aa3ebb913f5cd4711029c2

登陆后的1.html截图
9666444fbd2935cabdd8b5c9af46da7

@timeflyingaway
Copy link
Owner

这样吧,首先我需要知道你点击登陆按钮后,第一个出现的是哪个,显示什么。然后,就像我说的,看上去你现在登录使用了cookie缓存,建议尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备再测试一下。如果还是这样的,那就说明你的这个登录是通过cookie的,那也行,就是代码里要加个参数。

@Darkoutput
Copy link
Author

这样吧,首先我需要知道你点击登陆按钮后,第一个出现的是哪个,显示什么。然后,就像我说的,看上去你现在登录使用了cookie缓存,建议尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备再测试一下。如果还是这样的,那就说明你的这个登录是通过cookie的,那也行,就是代码里要加个参数。

大佬,我测试了好几遍,隐身模式和其他电脑都试过了,都是登陆前第一个是a70.html,登陆后第一个是1.html,大佬看看是什么方法登录的,帮忙修改下登陆方式代码,谢谢谢谢!

@timeflyingaway
Copy link
Owner

timeflyingaway commented Sep 4, 2022

这样吧,首先我需要知道你点击登陆按钮后,第一个出现的是哪个,显示什么。然后,就像我说的,看上去你现在登录使用了cookie缓存,建议尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备再测试一下。如果还是这样的,那就说明你的这个登录是通过cookie的,那也行,就是代码里要加个参数。

大佬,我测试了好几遍,隐身模式和其他电脑都试过了,都是登陆前第一个是a70.html,登陆后第一个是1.html,大佬看看是什么方法登录的,帮忙修改下登陆方式代码,谢谢谢谢!

你试一下吧,把99行的
curl -G --connect-timeout $timeout "http://172.17.0.2:801/eportal ......
改成
curl -G --connect-timeout $timeout "http://172.16.255.253/1.htm" --cookie "program=portal;vlan=0;ip=${ip};ISP_select=${isp};md5_login2=${account}${isp}%${password}" --referer "http://172.16.255.253/a70.htm?isReback=1"

7-12行account后面填你的手机号,password后面填写7C123456(这个应该是你的密码吧),ispcmcc

不过吧首先我不太确定你们网页会返回什么,所以不太确定55行的get_info()能否正常工作,主要是第一个ip,后面的你不需要。你可以把58行前面的注释(#)去掉单独运行脚本(不添加$)看看是否正常工作(正常工作的话会打印出你的ip)。其次最好先单独测试一下上面提供给你的curl命令,把里面的变量(也就是${xxx}这样的格式)替换成你实际内账户名、密码、ip之类的,看看能不能正常工作,正常工作了再测试脚本。

@Darkoutput
Copy link
Author

Darkoutput commented Sep 4, 2022

这样吧,首先我需要知道你点击登陆按钮后,第一个出现的是哪个,显示什么。然后,就像我说的,看上去你现在登录使用了cookie缓存,建议尝试浏览器使用隐身模式或者直接换一个从来没登陆过的设备再测试一下。如果还是这样的,那就说明你的这个登录是通过cookie的,那也行,就是代码里要加个参数。

大佬,我测试了好几遍,隐身模式和其他电脑都试过了,都是登陆前第一个是a70.html,登陆后第一个是1.html,大佬看看是什么方法登录的,帮忙修改下登陆方式代码,谢谢谢谢!

你试一下吧,把99行的 curl -G --connect-timeout $timeout "http://172.17.0.2:801/eportal ...... 改成 curl -G --connect-timeout $timeout "http://172.16.255.253/1.htm" --cookie "program=portal;vlan=0;ip=${ip};ISP_select=${isp};md5_login2=${account}${isp}%${password}" --referer "http://172.16.255.253/a70.htm?isReback=1"

7-12行account后面填你的手机号,password后面填写7C123456(这个应该是你的密码吧),ispcmcc

不过吧首先我不太确定你们网页会返回什么,所以不太确定55行的get_info()能否正常工作,主要是第一个ip,后面的你不需要。你可以把58行前面的注释(#)去掉单独运行脚本(不添加$)看看是否正常工作(正常工作的话会打印出你的ip)。其次最好先单独测试一下上面提供给你的curl命令,把里面的变量(也就是${xxx}这样的格式)替换成你实际内账户名、密码、ip之类的,看看能不能正常工作,正常工作了再测试脚本。

大佬,我按照你的方法测试了,密码是纯数字的123456(没有7C),我直接复制了请求里的cookie换进去,在ubuntu中测试curl命令,返回这个
e268f151057d32dba71d32cfbae8fac

接着在58行修改成echo ip,并在开头填好了个人信息和替换99行

a17ab9ba2371219471d9cd3c2fd1fb2

976b2fa3d490dcae032eac3fa955bf3

第一次运行脚本出现这个错误
074fc68e7f3988c1ac521bc9f52bf52

我把135行注释掉后运行代码
8d99c10ff324138a883cf9b3a6667bb

大佬再看看是什么问题,幸苦啦,谢谢

@timeflyingaway
Copy link
Owner

你输入一下ifconfig,在结果里找到172.16.40.63,然后只把那一段发给我(要完整的,空行到空行的位置,那几行都发我)

@timeflyingaway
Copy link
Owner

另外和你说漏了,curl的测试,还有一个地方要代入,那个$timeout你改成3

@Darkoutput
Copy link
Author

Darkoutput commented Sep 4, 2022

另外和你说漏了,curl的测试,还有一个地方要代入,那个$timeout你改成3

我更换了一台路由器后,重新进入路由器后台curl测试了下,返回了1.htm内容
image

然后尝试执行脚本,但一直卡在这个界面没反应
image

@Darkoutput
Copy link
Author

你输入一下ifconfig,在结果里找到172.16.40.63,然后只把那一段发给我(要完整的,空行到空行的位置,那几行都发我)

更换路由器新地址172.16.40.3后ifconfig,大佬再看看,谢谢
image
7658a5cd2238415f5364cc6248e34b0

@timeflyingaway
Copy link
Owner

timeflyingaway commented Sep 4, 2022

99行
curl -G --connect-timeout $timeout "http://172.16.255.25 ......
改成
curl -G --connect-timeout $timeout "http://172.16.255.253/1.htm" --cookie "program=portal;vlan=0;ip=${ip};ISP_select=${isp};md5_login2=${account}${isp}%7C${password}" --referer "http://172.16.255.253/a70.htm?isReback=1"
第10行password就是123456就行了

55-72行

get_info() {
  ##ip:"172.28.x.x"
  ip=$(echo $source | awk -F "<NextURL>" '{print $2}' | awk -F ['&''?'] '{print $2}' | awk -F ['='] '{print $2}')
  #echo $ip

  ##wlanacname:"wlanacname=null"
  ......
}

改成

get_info() {
  ##ip:"172.x.x.x"
  ip=ifconfig eth2.2 | grep "inet addr" | awk '{print $2}'|cut -c 6-
  #echo $ip
}

@Darkoutput
Copy link
Author

image

出现这个错误,74-76行需要注释吗,大佬

@timeflyingaway
Copy link
Owner

另外和你说漏了,curl的测试,还有一个地方要代入,那个$timeout你改成3

我更换了一台路由器后,重新进入路由器后台curl测试了下,返回了1.htm内容 image

然后尝试执行脚本,但一直卡在这个界面没反应 image

首先,你应该在未联网的情况下,使用curl,测试执行一次后是否联网,若已联网则继续测试脚本,若未联网就不用再试脚本了,直接告诉我再看看。目前来看你的返回是正常的。

测试脚本,你的反应是正常的,因为这个脚本的目的不是登录一次,而是保持登录,即断网后自动重连,所以脚本会一直不断地运行。使用Ctrl+C可以结束脚本。你可以在脚本执行命令后面空格加上“&”使得脚本直接进入后台运行,比如./GXU-Login.sh &。你可以为脚本设置开机自启,但是请注意,请务必确保你有手段结束他,因为本脚本在没有网络连接的时候会尝试重启路由器,如果你没有手段终止可能会陷入无限重启,请务必注意。当然你如果不想在断网时重启路由器,可以注释第26行restarted=0

之前你好像注释了第135行,那个return,请恢复,出现那个报错是不正常的,那行不能被注释,如果还发生报错请告知我。

@timeflyingaway
Copy link
Owner

image

出现这个错误,74-76行需要注释吗,大佬

你是不是改过文件了,默认情况下74-76行根本不会被执行

@Darkoutput
Copy link
Author

大佬,在未联网情况下curl,返回类似的1.htm内容,实际并未联网成功,大佬再看看
image

@timeflyingaway
Copy link
Owner

你把--referer "http://172.16.255.253/a70.htm?isReback=1"去了试试?
不行你curl命令后面加 > ./output.txt,然后把输出的文件发给我看看。

@Darkoutput
Copy link
Author

你把--referer "http://172.16.255.253/a70.htm?isReback=1"去了试试? 不行你curl命令后面加 > ./output.txt,然后把输出的文件发给我看看。

大佬,这是output.txt文件,您再看看

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta id="viewport" name="viewport" content="target-densitydpi=device-dpi,width=640px,user-scalable=1">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE">
<title></title> 
<!--Dr.COMWebLoginID_0.htm-->
<link rel="stylesheet" type="text/css" href="b82.css" /><!--bootstrap.min.css-->

<script type="text/javascript" src="a42.js"></script><!--jquery1.11.3.min.js-->

<script>
document.write('<script language=javascript src="a41.js?version=1.4_'+(new Date()).valueOf()+'"><\/script>');
document.write('<script language=javascript src="'+window.location.protocol + '//' + window.location.hostname + ':801/eportal/extern/portal/config.js?version=1.4_'+(new Date()).valueOf()+'"><\/script>');
</script>

<script type="text/javascript">
sv=0;sv1=0;v6='http://[::]:9002/v6                                     ';myv6ip='                                       ';v4serip='172.16.255.253' ;m46=0;v46ip='172.16.40.3'                            ;
vid=0   ;mip=172016040003;Gno=0000;vlanid="0"   ;AC="";                          ipm="ac10fffd";ss1="0010f36d118d";ss2="0000";ss3="ac102803";ss4="000000000000";ss5="172.16.40.3"    ;ss6="172.16.255.253" ;timet=1662336701; 
osele=0;//1=不弹窗
domain='[::]';// ////////////////////////////////////////

/** 哆点参数 start */
//1.基本参数
portalid='';//门户ID
portalname='';//门户名称
//2.可选参数
portalver='';//门户版本
serialno='';//序列号
logourl='';//门户logo
bannerurl='';//横幅广告
welcome='';//欢迎词
businessurl='';//业务接口
//3.旁路参数
authexenable='0';//是否启用旁路扩展模式
authtype=1;//登录协议
authloginIP='';//登录IP
authloginport=801;//登录端口
authloginpath='/eportal/?c=ACSetting&a=Login';//登录路径
authloginparam=''; //登录参数
authuserfield='DDDDD';//账号节点
authpassfield='upass';//密码节点
terminalidentity=1;//终端识别标识 先配置成填写
authlogouttype=1;//注销协议
authlogoutIP='';//注销IP
authlogoutport=80;//注销端口
authlogoutpath='/eportal/?c=ACSetting&a=Logout&ver=1.0';//注销路径
authlogoutparam='';//注销参数
authlogoutpost='';//注销post参数
querydelay=0;//登录后延时查询网络状态
querytype=1;//状态查询协议
queryIP='';//状态查询IP	
queryport=80;//状态查询端口
querypost='';//状态查询post参数
querypath='/eportal/?c=ACSetting&a=Query';//状态查询路径
queryparam='';//状态查询参数
authsuccess='Dr.COMWebLoginID_3.htm';//登录成功标志
authfail='Dr.COMWebLoginID_2.htm';//登录失败标志
isquery=0;
authhost='';
authoffpost='';
charset='gb2312';//页面编码
exparam=0;//扩展标志位
//4.运营商选择
carrier='{"yys":{"title":"服务类型","mode":"radiobutton","data":[{"id":"1","name":"校园网","suffix":""},{"id":"2","name":"中国移动","suffix":"@cmcc"},{"id":"3","name":"中国电信","suffix":"@telecom"}],"defaultID":"1"}}';//运营商选择
//5.限制非哆点客户端登陆
//把原先Dr.COMWebLoginID_ 改成: Dr.COM1.0WebLoginID_
portalsrvno='DR371430';
/** 哆点参数 end */

var programUrl = window.location.protocol + "//" + window.location.hostname + ":801/eportal/extern/portal/";
newComm.setArgsCookies(programUrl,vlanid,ss5);

// 访问设备:0-其他;1-PC;2-手机;3-平板
var iTermType = normalFun.getTermType();
if(iTermType==2){
    newComm.setNessArg('mobile_79');
}else{
    newComm.setNessArg('pc_79');
}
newComm.setNessJs();

//广告统计设置
static_mark="000000";
slider_mark="000000";

hnaSetAdCount('1008', ss4, '', ss5, ss4);

</script>

</head>

<body>
</body>
</html>
<script type="text/javascript">
$(function(){
    newComm.setNessSett();
});
</script>

@timeflyingaway
Copy link
Owner

不好意思,比较忙,忘了回了。上面的output里面并没有什么有用的信息,完全没有记录什么。目前来说,你这个肯定不是普通的get,普通get方式的话数据都是在url里面直接体现的。现在的话只能说乱试了,因为我没法实际试验,可能性太多了。你可以尝试使用WireShark等工具直接抓包网络连接,看看到底发送了什么,如果你能找到的话那就很有希望模拟。你可以尝试使用我的脚本原来的curl命令,只把里面网址,ip、密码、运营商啥的换成你实际的,然后看看能不能登陆。里面不是所有参数都是必须的,或者说大部分参数都不是必须的,你可以自己尝试删减,顺序是无所谓的,如果你们那里有没有禁用get方式的登录那就很可能成功。你可以直接用你电脑的浏览器试验,浏览器地址栏输入地址后回车就是get。另外呢,其实你可以尝试修改下你的登录界面的网址,比如把问号后面的全删掉按回车跳转,或者把IsReback=1改成=0跳转后,看看会不会跳转回IsReback=1,或者正常显示了但又没有正常登录。如果说你看到了不正常的情况的话那都很可能成为突破口。上面说了很多种方法和很多种可能,具体的话只能你自己研究自己去试了。当然还有一种绝对能解决的方法,就是用python直接模拟用户使用浏览器登陆的行为,但这就至少需要软路由(或者直接拿台电脑,任意系统都行)了,而且还可能得需要图形化界面了,就很麻烦而且小题大做了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants