XCTF 攻防世界 Web题的基本知识点
XCTF 攻防世界 Web题的基本知识点和解题思路
- 大多数状况下,robots协议指的就是robots.txt
- index.php的备份文件:/index.php.bak
- 页面中若是出现了不能按的按钮,多是代码中设置了disable参数,将网页源代码中的disable=""删除或者改成false(注意:safari浏览器可能没法方便的直接修改源代码,能够换为firefox浏览器)
- 遇到php的源代码,注重分析,若是只是简短的几行代码,而且有相似于$a, $b这样的变量,能够直接在url的后面添加上 /?a=…&b=…进行尝试
- 若是题目中要求用GET方法发送一个值时,能够直接在url的后面添加 /?a=…(若是是POST方法,firefox浏览器使用hackbar插件能够很容易的解决;固然,利用burpsuite拦截发包也是能够的,注意:在用burpsuite进行POST请求的时候,须要加上Content-Type: application/x-www-form-urlencoded)
- X-Forwarded-For和Referer是很重要的两个参数,用于请求的伪造。若是题目中必定要某个ip地址的话,可使用X-Forwarded-For参数指定ip地址,如X-Forwarded-For: 127.0.0.1; Referer参数用于伪造来源,如Referer: https://www.baidu.com
- 题目中出现了一句话木马,如<?php @eval($_POST['shell']); ?>,则能够尝试用蚁剑(AntSword)进行链接,链接密码即为shell
- 命令执行漏洞一般是因为没有WAF,如常常出现的ping命令,能够在输入框中尝试 ping 127.0.0.1 | find / -name “flag”,利用链接管道符能够显示多条命令执行的结果
- 题目中出现了\x这样的16进制,能够先尝试将16进制转为10进制,再转为相应的ASCII码
- 若是知道了php的版本,则进行搜索此版本对应的漏洞,找到利用漏洞PoC代码,进行尝试
- 看到php代码中有相似$ page的变量以及include($page)这样的语句,能够尝试构造 /?page=php://input 伪协议,若是php代码中有strstr区分大小写的函数),经过直接大小写,/?page=PhP://input绕过
- 在题目的网页中(如index.php页面),发现后面有id=1这样的形式,在暂时尝试了其余方法无果或者没有思路的状况下,能够尝试暴力破解。常常使用burpsuite的Intruder模块进行暴力破解,选择payload或者导入字典
- 若是题目页面中只有一张图片的话,查看网页的源代码,寻找信息,在源代码中可能隐含flag的文件信息,如hint.php, flag.php,而后在url的最后添加?file=hint.php进行尝试
- 看到搜索框,首先想到的确定是SQL注入和XSS注入,SQL测试:一般先输入1,看看有没有返回值;XSS测试:输入“>< script>alert(1)< /script><”,看有没有回显的框弹出。若是肯定为是SQL注入,能够尝试进行手动注入(一步一步的进行深刻);也能够拦截抓包进行POST请求,而后将请求保存为request.txt文件(文件名随意取),经过自动化工具sqlmap进行自动注入:sqlmap -r request.txt --dbs,在发现了数据库的名称以后,能够尝试 sqlmap -r request.txt -D 数据库名 --dump,直接将数据库的内容都dump出来。(注意:在实际的操做中,不多有彻底借助sqlmap进行注入的状况,一般都是手动注入和sqlmap相结合)
- 遇到打不开的网页时,能够将后缀名改成html,尝试打开
- 若是题目中的script代码的最后是eval(_),将eval改成alert,在回显以后的代码里寻找和flag相关的,如正则表达式,放在控制台里运行一下,可能会看到flag的信息
- 在php代码里,__表明魔术方法,若是php代码中出现了__wakeup()方法,则可能跟php的序列化和反序列化相关。反序列化,首先要序列化。若是代码足够简单,则能够在代码最后加上 $a=new 类名(); echo(serialize( $a)); 将序列化的结果显示出来。要绕过__wakeup()方法,能够将序列化字符串中的对象个数修改一下,最后将反序列化的结果添加到url的最后
- 遇到文件上传漏洞的题目,能够先准备准备一句话木立刻传,如<?php highlight_file(_FILE_); system($_GET['cmd']); ?>。上传的文件首先能够尝试更改文件名,如1.php.jpg,若是不行,则能够在上传的同时,利用burpsuite拦截抓包,将文件名更改一下,大多数状况下就能够绕过过滤。上传成功后,则能够在request请求的最后(与http头的参数隔一行)加上 <?php system('ls'); ?>,继续send,会看到显示的目录,经过更改命令一步步的深刻,获取flag信息
- 查看php源文件的话,能够在最后加上s,也能够在url的最前面加上view-source: (注意:safari中时没法使用view-source显示源代码的,要使用firefox)
- python模块注入的问题,首先在url的最后加上 /{ {7+7}} 进行判断,若是页面中显示了相加的和,则说明存在服务器模版注入(SSTI),在url的最后添加 /{ {config.items()}},显示出全部变量的信息,而后构造
{ {''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('ls').read()}}
,看到flag信息后,继续构造{ {''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('cat fl4g').read()}}
,就能够获取到flag了
欢迎关注本站公众号,获取更多信息