CTF web 题型解题技巧-第一课 思路讲解

原定六月前学完的内容要延后了,先顾工作,后顾学习~对之前学习内容的总结:CTF web 题型解题技巧-第一课 思路讲解;之后会有关于CTF-WEB第二课、第三课等内容。

引用亮神的话:

如果你分享的内容过于真实,你就没有发表机会,你要完全假了呢,又没有读者去看,你可以在这个通道里,真一会儿假一会儿地往前走,最重要的还是要往前走。

----Micropoor

侯亮大神说:知识的最高的境界是分享,而在我看来,我们在分享的同时也是对自我认知的一个提升。

image.png

以下内容大多是我在学习过程中,借鉴前人经验总结而来,部分来源于网络,我只是在前人的基础上,对CET WEB进行一个总结;

工具集:
基础工具:Burpsuite、python、firefox(hackbar,foxyproxy,user-agent,swither等)

***了解Burpsuite的使用方式、firefox(hackbar,foxyproxy,user-agent,swither等)插件的使用给漏洞挖掘带来便利。

扫描工具:nmap,nessus,openvas

***了解nmap等扫描工具的使用。

sql注入工具:sqlmap等

***注入在CTF WEB中比较常见,通过暴库找到flag

xss平台:xssplatfrom,beef

***利用xss弹cookie的方式弹出flag

文件上传工具:cknife

文件包含工具:LFlsuite

暴力破解工具:burp暴力破解模块,md5Crack,hydra

常用套路总结
直接查看网页源码,即可找到flag
考察基本的查看网页源代码、HTTP请求、修改页面元素等。

这些题很简单,比较难的比赛应该不会单独出,就算有因该也是Web的签到题。

实际做题的时候基本都是和其他更复杂的知识结合起来出现。

姿势:恶补基础知识就行

***按F12就都看到了,flag一般都在注释里,有时候注释里也会有一条hint或者是对解题有用的信息。

查看http请求/响应
使用burp查看http头部信息,修改或添加http请求头(referer–来源伪造,x-forwarded-for–ip伪造,user-agent–用户浏览器,cookie–维持登陆状态,用户身份识别)

可以用hackbar,有的也可以写脚本

不常见类型的请求发送
以前做过一道题考OPIONS请求,可惜题目找不到了,而且那道题也不算很基础。

不过如果要发送这类请求,写一个脚本应该就能解决了

HTTP头相关的题目
主要是查看和修改HTTP头。姿势:不同的类型有不同的利用方法,基本都离不开抓包,有些简单的也可以利用浏览器F12的网络标签解决。但是最根本的应对策略,是熟悉一些常见请求头的格式、作用等,这样考题目的时候就很容易知道要怎么做了。查看相应头有时候响应头里会有hint或者题目关键信息,也有时候会直接把flag放在响应头里给,但是直接查看响应头拿flag的题目不多,因为太简单了。知识查看的话,可以不用抓包,用F12的“网络”标签就可以解决了。

修改请求头、伪造Cookie
常见的有set-cookie、XFF和Referer,总之考法很灵活,做法比较固定,知道一些常见的请求头再根据题目随机应变就没问题了。有些题目还需要伪造cookie,根据题目要求做就行了。可以用Burp抓包,也可以直接在浏览器的F12“网络”标签里改。

ctf之流量分析:
流量分析中wireshark的使用在下面介绍

web源码泄漏:
vim源码泄漏(线上CTF常见)
如果发现页面上有提示vi或vim,说明存在swp文件泄漏,地址:/.index.php.swp或index.php~

恢复文件 vim -r index.php,备份文件泄漏
地址:index.php.bak,www.zip,htdocs.zip,可以是zip,rar,tar.gz,7z等

.git源码泄漏
地址:http://www.xxx.com/.git/config,工具:GitHack,dvcs-ripper

svn导致文件泄漏
地址:http://www/xxx/com/.svn/entries,工具:dvcs-ripper,seay-svn

Git源码泄露
flag一般在源码的某个文件里,但也有和其他知识结合、需要进一步利用的情况,比如XCTF社区的mfw这道题。姿势:GitHack一把梭

编码和加解密,各类编码和加密
可以使用在线工具解密,解码

windows特性,短文件名
利用~字符猜解暴露短文件/文件夹名,如backup-81231sadasdasasfa.sql的长文件,其短文件是backup~1.sql,iis解析漏洞,绕过文件上传检测

php弱类型
php弱类型第二课会涉及。

PHP伪协议
在CTF中经常出现,也经常跟文件包含,文件上传,命令执行等漏洞结合在一起。

php伪协议在第二课会涉及

绕waf
大小写混合,使用编码,使用注释,使用空字节

python爬虫信息处理
这类题目一般都是给一个页面,页面中有算式或者是一些数字,要求在很短的时间内求出结果并提交,如果结果正确就可以返回flag。

因为所给时间一般都很短而且计算比较复杂,所以只能写脚本。这种题目的脚本一般都需要用到requests库BeauifulSoup库(或者re库(正则表达式)),个人感觉使用BeautifulSoup简单一些。

姿势:requests库和BeautifulSoup库熟练掌握后,再多做几道题或者写几个爬虫的项目,一般这类题目就没什么问题了。主要还是对BeautifulSoup的熟练掌握,另外还需要一点点web前端(html)的知识。

PHP代码审计
代码审计覆盖面特别广,分类也很多,而且几乎什么样的比赛都会有,算是比较重要的题目类型之一吧。

姿势:具体问题具体分析,归根结底还是要熟练掌握PHP这门语言,了解一些常见的会造成漏洞的函数及利用方法等。

数组返回NULL绕过
PHP绝大多数函数无法处理数组,向md5函数传入数组类型的参数会使md5()函数返回NULL(转换后为False),进而绕过某些限制。如果上面的代码变成:

if(md5( a ) = = = m d 5 ( a) === md5( a)===md5(b)) { //两个等号变成三个

echo $flag;

}

那么利用弱类型hash比较缺陷将无法绕过,这时可以使用数组绕过。传入?a[]=1&b[]=2 就可以成功绕过判断。这样的方法也可以用来绕过sha1()等hash加密函数相关的判断,也可以绕过正则判断,可以根据具体情况来灵活运用。

正则表达式相关
ereg正则%00截断
ereg函数存在NULL截断漏洞,使用NULL可以截断过滤,所以可以使用%00截断正则匹配。

Bugku ereg正则%00截断:http://123.206.87.240:9009/5.php

数组绕过
正则表达式相关的函数也可以使用数组绕过过滤,绕过方法详见数组返回NULL绕过。

上面那道题也可以用数组绕过。

单引号绕过preg_match()正则匹配
在每一个字符前加上单引号可以绕过preg_match的匹配,原理暂时不明。

命令执行漏洞
assert()函数引起的命令执行

ssert函数的参数为字符串时,会将字符串当做PHP命令来执行。例如:assert(‘phpinfo()’)相当于执行<?php phpinfo() ?>

XSS题目
这类题目会涉及到三种XSS类型,具体类型要根据题目来判断。一般都是向后台发送一个带有XSSPayload的文本,在返回的Cookie中含有flag,解法是在XSS Payload。这类题目一般都会带有过滤和各种限制,需要了解一些常用的绕过方法。姿势:XSS归根结底还是JavaScript,JavaScript的威力有多大,XSS的威力就有多大。要知道一些常用的XSSPayload,还要把三类XSS的原理弄明白。做题时需要用到XSS平台,网上有公用的,也可以自己在VPS上搭一个。

JavisOJ babyxss:http://web.jarvisoj.com:32800/

绕过waf
其实绝大多数比较难的题目多多少都会对输入有过滤,毕竟在现实的网络中肯定是会对输入进行限制的,但是这里还是把过滤单独列出来了。姿势:多掌握一些不同的绕过方法。

长度限制
有些题目会要求输入较长的文本,但对文本的长度进行了限制。对于这种题目,既可以用BurpSuite抓包改包绕过,也可以直接在F12里改页面源代码。

Bugku 计算器(修改页面源代码):http://123.206.87.240:8002/yanzhengma/

DVWA 存储型XSS的标题栏会对长度进行限制,使用BurpSuite抓包绕过。

双写
双写可以绕过对输入内容过滤的单次判断,在XSS、SQL注入和PHP代码审计的题目中比较常见。双写顾名思义就是将被过滤的关键字符写两遍,比如,如果要添加XSSPayload,又需要插入

HGAME2019有一道XSS题目就是过滤了

等价替代
就是不用被过滤的字符,而使用没有被过滤却会产生相同效果的字符。比如,如果SQL注入题目中过滤了空格,可以用/**/绕过对空格的限制;XSS题目如果过滤了

URL编码绕过
如果过滤了某个必须要用的字符串,输入的内容是以GET方式获取的(也就是直接在地址栏中输入),可以采用url编码绕过的方式。比如,过滤了 cat,可以使用 c%61t来绕过。

Linux命令使用反斜杠绕过
在Linux下,命令中加入反斜杠与原命令完全等价。例如,cat与 ca\t两条命令等价,效果完全相同。可以利用这个特性来进行一些绕过操作(当然,这个仅限于命令执行漏洞)。

URL二次解码绕过
这个类型本来应该放在代码审计里面,但是既然是一种绕过过滤的姿势,就写在这里了。如果源码中出现了urldecode()函数,可以利用url二次解码来绕过。以下是一些常用的HTML URL编码:

数组绕过
详见PHP代码审计的“数组返回NULL”绕过。数组绕过的应用很广,很多题目都可以用数组绕过。

SQL注入
SQL注入是一种灵活而复杂的攻击方式,归根结底还是考察对SQL语言的了解和根据输入不同数据网页的反应对后台语句的判断,当然也有sqlmap这样的自动化工具可以使用。姿势:如果不用sqlmap或者是用不了,就一定要把SQL语言弄明白,sqlmap这样的自动化工具也可以使用。

使用sqlmap
sqlmap的应用范围还不大明确,我都是如果sqlmap没法注入就手工注入。

sqlmap教程:https://www.jianshu.com/p/4509bdf5e3d0

转载大佬文章,原链接:https://www.secpulse.com/archives/133003.html

  • 2
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C知道:ctfreverse题型是指需要逆向分析的CTF题目类型。解题思路可以分为以下几个步骤: 1. 静态分析:首先,将给定的二进制文件进行静态分析,使用反编译工具(如IDA Pro)来查看代码的逻辑结构和函数调用关系。这可以帮助你理解程序的工作原理和逆向逻辑。 2. 动态调试:将程序加载到调试器(如GDB)中,以动态调试的方式执行程序。通过设置断点、查看寄存器和内存状态,以及跟踪程序执行流程,可以帮助你理解程序的运行过程和数据处理方式。 3. 逆向逻辑分析:根据程序的静态分析和动态调试结果,分析程序的逆向逻辑。这包括理解输入数据的处理方式、算法和加密机制等。你可以关注特定的代码块或函数,并尝试弄清楚它们的功能和目的。 4. 寻漏洞或关键信息:在逆向逻辑分析的过程中,要留意可能存在的漏洞或关键信息。这可能是一些硬编码的密码、密钥或验证条件等。寻这些信息有助于解决问题或绕过验证。 5. 反向运算或解密:根据逆向逻辑和到的关键信息,尝试进行反向运算或解密。这可能涉及到逆向算法、还原加密操作或破解密码等。使用逆向工具或编写自定义脚本来实现这些操作。 总之,ctfreverse题型解题思路是通过静态分析和动态调试来理解程序的逆向逻辑,寻漏洞或关键信息,并进行反向运算或解密来获取答案或绕过验证。这需要一定的逆向工程技术和经验,因此平时的学习和实践是非常重要的。希望这个解题思路对你有所帮助!如果有其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值