面试经验!!CTF战队冲冲冲,,网络安全!!

各位师傅们好,感谢你们能抽出时间给我机会来介绍自己。我叫xxxx,19岁,本科即将大二。

由于入坑时间不长所以比较菜,在三个多月前,在大佬的带领下,成功爱上网络安全,喜欢这种比赛竞争的感觉,虽然最近参加的比赛毫无体验感,但是在未来我一定会报仇血恨的。 在上大学以来,我一开始是学的前端开发方面,在知道ctf后,毫不犹豫就入坑了,现阶段我主要学的是web方向:

了解常见的知识比如:常见注入的简单利用(sql,xxe,ssti) XSS(跨站),CSRF(请求伪造),代码审计,反序列化(phar,对象,数组等的构造),了解python,php,js常见魔法方法,linux常见操作,了解docker容器的简单使用,ssh服务渗透基本流程,http协议等,有一定编写脚本的能力。

Web:

注入(SQL,XML,SSTI):

  • sql:服务端和数据库交互时,没有做足够的限制,导致用户可以构造sql语句来造成破坏。------数字型,字符型,盲注

  • xml:利用xml代码进行注入

XSS(跨站脚本攻击):

  • 造成:常出现在前端的漏洞,由于过滤不足,利用漏洞注入脚本代码,其他用户执行了恶意代码就可能造成损失。

    • (持久型,用户浏览包含恶意代码的网站就中招,网站留言,评论等交互的地方。)

    • (反射型:(常见),将恶意代码放在url中---远程服务器上接收cookie(www.xss.pt

  • 前端页面上构造payload

  • 获取权限,拿到cookie,会话劫持等,进行攻击。

CSRF(跨站请求伪造):

客户端,在登录一个网站的情况下(保留登录状态),携带cookied等信息访问第三方网站,而hark!在第三方网站拦截获取信息。

BurpSuite中利用poc,生成一个网页。来接收客户信息。

反序列化(phar,php):

序列化其实就是将数据转化成一种可逆的数据结构,自然,逆向的过程就叫做反序列化。

绕过php魔法方法比如__wakeup__,__tostring__,__sleep()__等等。

phar是基于php的打包文件:利用访file_get_content(),构造phar脚本执行文件内容,获取flag。(其中metadata以序列化形式存储,解析时会进行反序列化操作)

PHP代码审计:

  • pop链---利用魔法方法构造payload

    常见绕过方法,md5,php弱比较,http协议等利用harkbar。

SSTI(模板注入):

一般在python环境下,利用一系列魔法方法拿到flag。

常见做题: 传入{{7*7}}或者a{*comment*}b进行类型判断。,写脚本找可利用的key,调用函数,(os,eval等)然后读取文件

SSH(服务渗透)

第一步:信息探测 对于给定IP地址的靶场机器,对其进行渗透测试,首先需要考虑靶场机器开放的服务。 探测靶场开放的服务与服务的版本 nmap -sV靶场IP地址

探测靶场全部信息 nmap -A -v靶场P地址

探测靶场的操作系统版本与内核 nmap -O靶场IP地址

分析探测结果 对于SSH服务的22端口的靶场首先考虑 1.暴力破解 2.私钥泄露(私钥有没有对应的密码、是否可以找到私钥的用户名) 对于开放htp服务的80端口或者其他端口的靶场首先考虑 1.通过浏览器访问对应的靶场http服务,如 http://靶场lP地址:http服务端口 2.使用探测工具对http的目录进行探测,如dirb http://靶场lP地址:http服务端口 特别注意特殊端口(大于1024的端口)常见端口是0~1023端口,大于1024的为用户自行支配的端口,比如:8080端口,可以通过浏览器访问,查看是否开放http服务。

第二步:挖掘敏感信息 使用浏览器对靶场IP的http服务探测,对页面中展示的内容也要注意,尤其是联系人等信息(有可能就是ssh的用户名信息),递归访问,力争把每一个dirb扫描到的目录页面都访问查看;

尤其对robots.txt、以及一些目录进行访问,挖掘具备利用价值的信息。对于开放ssh服务的靶场,务必要注意是否可以寻找到ssh私钥信息(id_rsa);

点击后返回了之前的页面,没有可利用价值

第三步:利用私钥信息进行登录 对于某些靶场,也可以使用nikto扫描器来挖掘敏感信息; nikto -host靶场lP地址 特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息;

利用敏感、弱点信息 对挖掘到的ssh密钥利用 1.修改id_rsa的权限 chmod 600 id_rsa

提升权限到600

2.利用私钥登陆服务器 ssh -i id_rsa 用户名@靶场IP地址 注意:如果id_rsa 没有解密密码,可以直接使用。但是如果id_rsa有解密密码,那么就需要进行对应的破解。

扩大战果 登录服务器之后,我们需要做以下操作。 1.查看当前用户whoami 2.id查看当前用户的权限 3.查看根目录寻找flag文件 如果是root权限,那么表明这个靶场就被全部拿下。但是如果不是,就肯定需要提权。一般情况下,flag文件只属于root用户和对应的用户组; cat /etc/passwd查看所有用户的列表 cat /etc/group查看用户组 find / -user用户名查看属于某些用户的文件 /tmp 查看缓冲文件目录

前端

三件套,ajax,vue,git的使用,简单的nodejs使用

ajax:即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式异步的JavaScript

function ajax(url) { const p = new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true) xhr.onreadystatechange = () => { if(xhr.readyState = 4){ if((xhr.status >= 200 && xhr.status < 300) || xhr.status = 304){ resolve( JSON.parse(xhr.response) ) }else{ reject(new Error('Response error')) } } } xhr.send(null) }) return p } const url = 'text.json' ajax(url).then(res => console.log(res)).catch(err => console.log(err))

Vue生命周期

(1)创建期间的生命周期函数:

beforeCreate(初始化界面前):

实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性

created(初始化界面后):

实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板

(2)挂载期间的生命周期函数

beforeMount(渲染DOM前):

此时已经完成了模板的编译,但是还没有挂载到页面中

mounted(渲染DOM后):

此时,已经将编译好的模板,挂载到了页面指定的容器中显示

(3) 运行期间的生命周期函数:

beforeUpdate(更新数据前):

状态更新之前执行此函数, 此时 data 中的状态值是最新的,但是界面上显示的 数据还是旧的,因为此时还没有开始重新渲染DOM节点

updated(更新数据后):

实例更新完毕之后调用此函数,此时 data 中的状态值 和 界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!

(4)销毁期间的生命周期函数:

beforeDestroy(卸载组件前):

实例销毁之前调用。在这一步,实例仍然完全可用。

destroyed(卸载组建后):

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

面试复盘:

php-->深度,cve,如何运行,反序列化原理,pop链

前端-->原型链污染(JavaScript,Nodejs)

渗透测试

ssti,csrf

http协议

请求,post,get

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值