1. 1. 一、安全
    1. 1.1. 1、PHP 作为弱类型语言,在底层它是怎么判断变量的类型的
    2. 1.2. 2、SQL 注入时有哪些替代空格
    3. 1.3. 3、xss与csrf区别
    4. 1.4. 4、啥是同源策略,跨域有几种方式
    5. 1.5. 5、jsonp
    6. 1.6. 6、内容安全策略(CSP)
    7. 1.7. 7、SSRF漏洞原理是什么?利用时有哪些伪协议
    8. 1.8. 8、云waf
    9. 1.9. 9、链路层劫持
    10. 1.10. 10、如何绕过cdn,获取真实ip
    11. 1.11. 11、ARP攻击
    12. 1.12. 12、HTTPS原理,以及加密、解密的原理
    13. 1.13. 13、MYSQL5.7中的安全特性
    14. 1.14. 14、MYSQL加密方式
    15. 1.15. 15、localStorage,sesseionStorage
    16. 1.16. 16、HQL注入
    17. 1.17. 17、order by 注入
    18. 1.18. 18、 limit 注入
    19. 1.19. 19、PHP文件包含–session
    20. 1.20. 20、IIS短文件名漏洞
    21. 1.21. 21、SSRF无回显
    22. 1.22. 22、redis未授权getshell
    23. 1.23. 23、phar+反序列化
    24. 1.24. 23、http-only绕过方法
    25. 1.25. 24、PHP5.5 ~ PHP7.2 新特性
    26. 1.26. 25、OWASP-top10
    27. 1.27. 26、GOpher协议
    28. 1.28. 27、文件名解析漏洞
    29. 1.29. 28、java安全
    30. 1.30. 29、后渗透
    31. 1.31. 30、FastJson反序列化
    32. 1.32. 31、DNSlog
    33. 1.33. 32、iptables
    34. 1.34. 33、JavaScript 原型链污染
    35. 1.35. 34、websocket
    36. 1.36. 35、一些cms漏洞分析
    37. 1.37. 36、免杀
    38. 1.38. 37、sql注入防御
    39. 1.39. 38、一次有趣的绕过
    40. 1.40. 39、linux下passwd和shadow区别
  2. 2. 二、python
    1. 2.1. 1、PYTHON三大神器:装饰器,迭代器,生成器
    2. 2.2. 2、标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?
  3. 3. 三、后渗透
    1. 3.1. 1、mysql提权
  4. 4. 四、其他
    1. 4.1. 数据库设计的三大范式
  5. 5. 参考

web安全面经积累

一、安全

1、PHP 作为弱类型语言,在底层它是怎么判断变量的类型的

PHP 作为弱类型语言,在底层它是怎么判断变量的类型的

2、SQL 注入时有哪些替代空格

/**/替代空格
and(1=0)括号绕过
%09 %0A %0D +都可以替代空格绕过

3、xss与csrf区别

CSRF:无法获取受害者的cookie,无法看到cookie;
只是利用受害者是被服务器信任的(靠验证cookie),而给服务器发送请求;
XSS:利用cookie只是xss的一种体现,xss还可以篡改网页、URL跳转等等;跨站脚本,脚本可以做什么,xss就可以做什么;单在利用cookie上来说:获取受害者的cookie,从而得到服务器的信任,进行后续攻击
获取手段是反射、存储、dom

4、啥是同源策略,跨域有几种方式

https://blog.csdn.net/lsg14215/article/details/102753275
https://www.jianshu.com/p/203217977b22
跨域1、通过jsonp请求 2、通过服务器代理进行跨域请求

5、jsonp

https://www.runoob.com/json/json-jsonp.html
jsonp是jquery提供的跨域方式
cors是w3c提供的一个跨域标准
jsonp只支持get方式的跨域
cors支持get和post方式的跨域

6、内容安全策略(CSP)

https://developer.mozilla.org/zh-CN/docs/Web/Security/CSP/CSP_policy_directives
https://blog.csdn.net/qq_37943295/article/details/79978761

7、SSRF漏洞原理是什么?利用时有哪些伪协议

SSRF漏洞原理是什么?利用时有哪些伪协议
原理:利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。
ssrf用处:探测内网信息,用协议探ftp%26ip={ip}%26port={port},攻击内网或本地其他服务,穿透防火墙
利用协议:curl,file://,Dict://,SFTP://,TFTP://,LDAP://,Gopher://

8、云waf

云WAF部署在web应用程序前面,在用户请求到达web服务器前对用户请求进行扫描和过滤,分析并校验每个用户请求的网络包,确保每个用户请求有效且安全,对无效或有攻击行为的请求进行阻断或隔离。通过检查HTTP流量,可以防止源自web应用程序的安全漏洞(如SQL注入,跨站脚本攻击,文件包含和安全配置错误)的攻击。
https://www.cnblogs.com/bmjoker/p/8806214.html
https://www.idcbest.com/idcnews/11003330.html

9、链路层劫持

链路层劫持是指第三方(可能是运营商、黑客)通过在用户至服务器之间,植入恶意设备或者控制网络设备的手段,侦听或篡改用户和服务器之间的数据,达到窃取用户重要数据(包括用户密码,用户身份数据等等)的目的。链路层劫持最明显的危害就是帐号、密码被窃取。
http://www.sohu.com/a/84898660_188485

10、如何绕过cdn,获取真实ip

如何绕过cdn,获取真实ip
1、二级域名法
2、nslookup
例如:nslookup http://xxx.com 8.8.8.8,提示:你要找冷门国外DNS才行,像谷歌的DNS,国内用的人越来越多了,很多CDN提供商都把谷歌DNS作为国内市场之一
3、第三方搜索,fofa,凌波微步
4、phpinfo,rss订阅

11、ARP攻击

https://blog.csdn.net/zhydream77/article/details/85334042

12、HTTPS原理,以及加密、解密的原理

HTTPS原理,以及加密、解密的原理
https://www.jianshu.com/p/e30a8c4fa329
HTTPS = HTTP + SSL

13、MYSQL5.7中的安全特性

https://blog.csdn.net/bamuta/article/details/52213660
http://www.imooc.com/article/47820
https://blog.csdn.net/weixin_33805992/article/details/86132485
https://www.cnblogs.com/zhoujinyi/p/5627494.html

5.7版本的用户表mysql.user要求plugin字段非空,且默认值是mysql_native_password认证插件,并且不再支持mysql_old_password认证插件。5.7用户长度最大为32字节,之前最大长度为16字节,并且CREATE USER 和 DROP USER 命令里实现了 IF [NOT] EXISTS 条件判断。5.7之后用户通过grant创建用户报warning

14、MYSQL加密方式

https://www.cnblogs.com/ichunqiu/p/7810914.html
MYSQL数据库的认证密码有两种方式,MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之后的版本都是MYSQLSHA1加密,MYSQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MYSQL数据库里进行查询,前者是MYSQL323加密,后者是MYSQLSHA1方式加密。

1
2
3
4
show create user dxy@localhost;
+----------------------------------------------------------------------------------+
| CREATE USER 'dxy'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
+----------------------------------------------------------------------------------+

15、localStorage,sesseionStorage

https://jerryzou.com/posts/cookie-and-web-storage/
sessionStorage和localStorage不会把数据发给服务器,仅在本地保存

  • cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
  • sessionStorage:仅在当前浏览器窗口关闭前有效
  • localStorage 始终有效,长期保存

1、cookie
本身用于客户端和服务端通信,但是它有本地存储的功能,于是就被“借用”,document.cookie = …获取和修改即可,cookie用于存储的缺点
存储量太小,只有4kb
所有http请求都带着,会影响获取资源的效率
api简单,需要封装才能用document.cookie
2、localStorage,sesseionStorage
html5专门为存储而设计,最大容量5M,api简单易用,lcoalStorage.setItem(key, value);localStorage.getItem(key);,ios safari隐藏模式下:localStorage.getItem会报错,建议统一使用try-catch封装
3、sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

16、HQL注入

Hibernate HQL注入与防御(ctf实例)

17、order by 注入

https://www.cnblogs.com/icez/p/Mysql-Order-By-Injection-Summary.html

18、 limit 注入

https://www.jianshu.com/p/6c1420a7a7d9
不存在 order by 关键字:这种情况下的 limit 后面可以使用union进行联合查询注入
存在 order by 关键字会报错:limit 关键字后面还可跟PROCEDURE和 INTO两个关键字,但是 INTO 后面写入文件需要知道绝对路径以及写入shell的权限,因此利用比较难,因此这里以PROCEDURE为例进行注入
mysql时间盲注一般都怎么注?

最简单的就是sleep了,用if(1=1,sleep(5),0)

benchmark函数

heavy query 笛卡尔积 —->具体的方式就是将简单的表查询不断的叠加,使之以指数倍运算量的速度增长,不断增加系统执行 sql 语句的负荷,直到产生攻击者想要的时间延迟

get_lock GET_LOCK有两个参数,一个是key,表示要加锁的字段,另一个是加锁失败后的等待时间(s),一个客户端对某个字段加锁以后另一个客户端再想对这个字段加锁就会失败,然后就会等待设定好的时间

19、PHP文件包含–session

https://www.cnblogs.com/Oran9e/p/8082962.html
利用条件:session文件路径已知,且其中内容部分可控。
文件包含:伪协议,session,包含日志,包含environ,包含fd,包含临时文件,包含上传文件

20、IIS短文件名漏洞

IIS短文件名漏洞
https://www.freebuf.com/articles/web/172561.html

21、SSRF无回显

https://xz.aliyun.com/t/6373#toc-2
Bool型

22、redis未授权getshell

ssrf打内网
redis未授权getshell
https://www.cnblogs.com/zuoxiaolongzzz/p/8945413.html

23、phar+反序列化

https://st4ck.gitee.io/2019/07/20/php-fan-xu-lie-hua-lou-dong/
https://st4ck.gitee.io/2020/01/06/python-fan-xu-lie-hua-lou-dong/
phar的利用姿https://st4ck.gitee.io/2020/01/04/phar-de-li-yong-zi-shi/)势
php反序列化:变量覆盖的问题吧,我们传入的字符串反序列化,导致控制参数或者任意代码执行
phar:在使用phar://协议读取文件时,文件会被解析成phar
解析过程中会触发php_var_unserialize()函数对meta-data的操作,造成反序列化。

23、http-only绕过方法

利用HTML5的CORS特性绕过httpOnly的限制实现XSS会话劫持

24、PHP5.5 ~ PHP7.2 新特性

PHP5.5 ~ PHP7.2 新特性整理
null合并运算符 +太空船操作符(组合比较符)+preg_replace () 的/e修饰符+assert() 默认不在可以执行代码

php7.2
允许重写抽象方法(Abstract method),扩展了参数类型,允许分组命名空间的尾部逗号
php5->7
标量类型声明 有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)
返回值类型声明
null合并运算符

1
2
3
4
//Before PHP7:
$id = isset($_GET[‘id’]) ? $_GET[‘id’] : null;
//In PHP7:
$id = $_GET[‘id’] ?? null; //equivalent of writing old above syntax

CSPRNG(伪随机数产生器)
php7取消了preg_replace () 的/e修饰符,
preg_replace_callback()
assert() 默认不在可以执行代码
性能提升

25、OWASP-top10

http://blog.nsfocus.net/owasp-top10-2017/

26、GOpher协议

https://xz.aliyun.com/t/5844

27、文件名解析漏洞

https://www.cnblogs.com/zlgxzswjy/p/6561229.html
https://www.jianshu.com/p/224ac688d135

28、java安全

Java家族安全

在Java中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。

https://javasec.org/
著名java发序列化漏洞 Apache的common Collection组件里的调用链的原理和利用思路(这个文章特别多) 后续的很多软件的漏洞都是因为使用了这个apache的组件导致的。我写了一个关于我的理解(https://tiaotiaolong.net/2019/07/19/Apache-Common组件反序列化原理/)同时也收录到我自己的git项目[tiaoVulenv](https://github.com/tiaotiaolong/tiaoVulenv)里。

关于java反序列化一般都是怎么修复的,修复思路是什么?黑名单?

fastjson 反序列化的问题 关于fastjson我写了一个连载,在博客里,同时也在我自己的git项目tiaoVulenv里。
https://xz.aliyun.com/t/5680
shiro 认证模块反序列化漏洞 大致原理以及利用方式。
读取cookie -> base64解码 -> AES解密 -> 反序列化
https://www.cnblogs.com/paperpen/p/11312671.html
https://www.bilibili.com/video/av57241403/
Spring 安全 原理 利用方法

Struts2 安全 原理 利用方法(s-45上传模块异常处理)
https://www.cnblogs.com/qiantan/p/10695567.html
045-https://blog.csdn.net/xiao190128/article/details/61202955
https://blog.csdn.net/xiao190128/article/details/61202955
JBoss 安全 原理 利用方法(未授权上传+反序列化)
https://www.jianshu.com/p/55ef524dd85d
Tomcat 安全 原理 利用方法(可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码。)
Tomcat 远程代码执行

WebLogic安全 原理 利用方法
https://www.freebuf.com/column/203816.html
由WebLogic Server WLS组件远程命令执行漏洞通过构造构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

jenkins 安全问题

JVM学习 可以参考深入理解Java虚拟机。

29、后渗透

https://www.jianshu.com/p/21090f74edb3
https://www.jianshu.com/p/aa1e23ccda92

30、FastJson反序列化

fastjson 反序列化的问题 关于fastjson我写了一个连载,在博客里,同时也在我自己的git项目tiaoVulenv里。
https://xz.aliyun.com/t/5680

31、DNSlog

https://www.cnblogs.com/sstfy/p/10351807.html
https://www.cnblogs.com/afanti/p/8047530.html

32、iptables

https://blog.csdn.net/weixin_37998647/article/details/78895754

33、JavaScript 原型链污染

https://www.anquanke.com/post/id/176884
在javascript中,每个对象的都有一个指向他的原型(prototype)的内部链接,这个原型对象又有它自己的原型,直到null为止

34、websocket

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

35、一些cms漏洞分析

discuz任意代码执行
https://cloud.tencent.com/developer/article/1511932

thinkphp任意代码执行
https://blog.csdn.net/qq_40884727/article/details/101452478

36、免杀

混淆
Powershell天然免杀,我们可以直接用Powershell命令去加载相应的脚本,下载后执行。这种方法是在内存中直接加载,能够绕过杀软的检测
第一步,上传Procdump到服务器,Procdump是一个Windows Debug工具,而且是微软爸爸官方提供的,所以无论如何杀软都不会把这货列进黑名单的

https://www.wtfsec.org/mimikatz-mian-sha/

利用抽空ProcessImage就起了一个进程(正常软件),然后把里面的Image抽掉然后映射你的软件进去

37、sql注入防御

https://blog.csdn.net/nzjdsds/article/details/77829158

38、一次有趣的绕过

https://www.cnblogs.com/xishaonian/p/7693136.html

39、linux下passwd和shadow区别

shadow是root可读
passwd匿名都可读

二、python

1、PYTHON三大神器:装饰器,迭代器,生成器

PYTHON三大神器:装饰器,迭代器,生成器

2、标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?

Python队列都是线程安全的,该问题主要考察你对队列的了解和线程安全的概念.
所谓线程安全:就是对于多线程同时操作是是安全的而不会发生写冲突,比如python的Queue
相反非线程安全:就是多线程同时操作时会发生写冲突,比如python的其他list,set,dict
logging是Python标准库里的日志模块(线程安全)

三、后渗透

1、mysql提权

https://blog.csdn.net/he_and/article/details/81434865
mof提权:在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof这个文件会每间隔一段时间(很短暂)就会以system权限执行一次,所以,只要我们将我们先要做的事通过代码存储到这个mof文件中,就可以实现权限提升。
udf提权:UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限
https://www.jianshu.com/p/d01167862c42
https://www.cnblogs.com/R4v3n/articles/8722657.html
mysql写木马
mysql反弹shell提权
phpmyadmin提权

四、其他

数据库设计的三大范式

1、数据库设计的三大范式

参考

https://attacker.cc/index.php/archives/24/