python学习笔记之:用urlllib库实现后台管理员登陆页面扫描

这个东西用途不广,因为少有网站会把管理员登陆界面和普通可浏览页面放在同个文件夹下,但是,对于一些挂马的网站,其网站管理员很有可能会这么干(我导师告诉我的,当时忘了问为啥。。有没有大神告诉我一下,万分感谢)
权当练个手吧2333
————————————————分割线———————————————
其实原理很简单,用urllib构造request请求,发送到指定的url,如果能够连上,说明该url存在,然后再遍历一个字典文件,将里面存储的可能用于登陆的页面添加/替换到指定url的后面,我的字典是这样的:
字典文件

导师给了我一个可能是挂马网站的urllist文件,是这样的(亲测有一个是老毛子的网站23333):
可能是挂马网站的url

具体过程是这样,先遍历urllist文件,向里面的url发送请求,如果成功连接,就把该url记录在一个新的文本文件里(我的文件名写urlok)

全遍历完之后,再遍历urlout里的url,遍历之前把字典中的页面替换到url里面,如果成功,则记录到一个新的文本文件(我的是urlresult)

最后得到的urlresult就是挂马网站的管理员页面了

贴个代码:

import urllib
import urllib2
import re

agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0"
headers = {"user-Agent":agent}
fpout = open("urlok.txt","w+")
fpres = open("result.txt","w")

def urlSend(url):
    try:
        req = urllib2.Request(url = url,headers = headers)
        res = urllib2.urlopen(req)
        print "[+] Success"
        fpout.write(url)
        return 1
    except urllib2.HTTPError,e:
        print "[-] " + str(e.code)
        return 0
    except urllib2.URLError,e:
        print "[-] " + str(e.reason)
        return 0

def main():
    fpurl = open("URLlist.txt","r")
    fpdic = open("dictionary.txt","r")

    for line in fpurl.readlines():
        print "[*] Linking " + line.strip("\n") + " now..."
        urlSend(line)
    print "--------------------------Scan Start--------------------------------------"
    fpurl.close()
    fpout.seek(0,0)
    pattern = re.compile("<title>(.*?)</title>")
    for line in fpout.readlines():
        for item in fpdic.readlines():
            newurl = re.sub("/\w+\.php","/"+item,line)
            if urlSend(newurl):
                print "[+] " + newurl.strip("\n") + "  OPEN"
                req = urllib2.Request(url = newurl,headers = headers)
                res = urllib2.urlopen(req)
                f = pattern.search(res.read())
                if f:
                    fpres.write(newurl.strip("\n") +"  title:"+ f.group(1) + "\n")
                    print "[+] title is:" +  f.group(1) + "\n"
                else:
                    print "[-] No title \n"
                    fpres.write(newurl + "\n")
            else:
                print "[-] "+ newurl.strip("\n") + "  CLOSE\n"
            fpdic.seek(0,0)
if __name__ == "__main__":
    main()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值