securityoverride hacking challenge 解题思路汇总

最近在刷CTF题目,无意中找到了securityoverride这个网站,觉得还不错,题目比较循序渐进。也不是往常的以获取flag为目的的形式,而是单纯的通过实例来模拟真实场景。于是在这里把每一题的答案以及解题思路记录下来,方便自己整理。

如果有人也想刷题,建议还是避免直接看答案,而是通过题目本身去进行搜索,这个过程也可以了解到很多新的概念,学习知识。另外,securityoverride本身支持了论坛,里面的帖子中基本都包含了每一题的hint,可以多加利用。

1. Reconnaissance

1.1. IP addressidentification

找IP,ping一下就好了,或者whois也行

1.2. NS serveridentification

找Name Server, whois 完事

1.3. PHP versionindentificaiton

看HTTP头

1.4. Full path Disclosureidentification via Array

利用服务器对崩溃日志管理不当来获取服务器的完整路径方法。在这里将GET参数page=1改为page[]=1,则page就会以数组的形式被服务器接收,而服务器没有错类型检测,直接当字符使用,从而产生崩溃。从崩溃日志就会暴露出完整文件路径

1.5. Full path Disclosureidentification

原理一样,利用服务器对变量处理不当引起的崩溃找到路径。这里主要利用cookie来进行传送,修改cookie中的PHPSESSID为空,服务器就将无法处理这条数据,从而产生崩溃日志。

2. Basic

2.1. Low level passworddiscovery

直接看源码,注释写着

不要笑,将复杂的密码直接写comment很方便调试,说不定哪天就有人忘删了

2.2. Medium level passworddiscovery

看源码,发现有隐藏项,提示pass.html的存在。进入查看即可获得密码。原理和上题一样,说不定就有人无意中把密码暴露出来了。

2.3. User agent

下个插件修改http头,把user-agent替换为Googlebot的就行。

2.4. Low level Tamper Data

改源码或者改http头,把uname改成Admin即可。最基本的绕过方式。

2.5. Low level Tamper Data +additional security

同样的方式,不知道区别在哪里。

2.6. Medium level TamperData

找到源码中Admin的邮箱[email protected],改为你自己的,然后点击reset。密码就会发送到你邮箱了。

2.7. HTTP protocol

随便输入一个密码,然后再返回的HTTP头中就可以发现Password:81gl32lb8w0e字段。

2.8. Low level SQLinjection

最基本的SQL注入,输入密码为”’OR a=a --”即可。这里可能它只认—为注释符号,#无效,大概它只是模拟了一个数据库,并不是完全真实的。

2.9. Cookies

查看Cookie,有一个Access字段的值为no,改为yes然后刷新就行了

2.10. Poisonous Cookies

这里它将输入的password进行了转码,因此无法直接进行SQL注入。但是它利用Cookies存储了password,从而有机可乘。输入任意password提交后,修改cookie然后刷新即可。、

2.11. Low level script injection

进入网页,发现发送了status=1字段。尝试修改为3后,返回了错误信息:Open(file, 3) failed:No such file or directory。可以推测,大概是执行了cat1之类打开并显示文件的操作。因此直接在后面利用pipeline追加命令。这里需要完整的参数是status=1|ls|cat,并不清楚为什么单独ls无法工作,可能还是跟虚拟场景有关。修改参数后,就会把当前目录下的文件暴露出来,从而可以查看文件,获得密码。

2.12. High level SQL injection

一个比较系统的sql注入流程。首先通过id=1+union+select+1,2,3,4--来确定返回的列数(实际过程中,就是尝试1,12,123,…直到返回结果正确)。接着可以利用information_schema表来获取基本信息了。同样的,由于是模拟的数据库,所以只能在第2列进行查询,在第3列进行查询会异常。通过确定列举table名,找到user表,在列举列名,找到密码对应的列名password,然后再直接查询就好了。

2.13. Unsanitized exec(The Magic 8-ball level)

没太搞懂这题的意思。大概就是给了你一个可以执行任意语句的入口。然后ls一下,得到文件列表。然后cat.htpasswd可以找到用户名,cat5h6Xsxab.txt可以找到密码,然后就完事了。可能主要目的是让你了解一下htaccess保护机制。

2.14. Medium Level XSS

尝试在Comment内容中注入,发现引号被过滤,直接放弃。既然提供了bbcodes,一定有漏洞可以挖掘。尝试[b],[i],[color=red],发现通过设置color,可以控制文本的style属性。不过同理,引号还是被过滤了。这里查到了一个比较古老的CSS注入[color=expression(alert(123))]blabla[/color]可以通过。实验了一下,这个方法只有在IE和一些浏览器的兼容模式下才有效,应当是属于已经废弃的方法。

2.15. Unique/Obscure XSS

比较经典的PHP_Self注入,少数可以修改服务器变量的方法之一。尝试在index.php后追加path,发现form中的action随之改变,不过引号、尖括号等特殊字符已被过滤。查看论坛,管理员告知这里虽然做了过滤,但不需要考虑过滤,只要输入正确的注入语句就能成功(估计是为了保护自身系统不受侵害)。于是无视过滤进行尝试,首先”/>alert(‘xss’),不过并没有成功。纠结一番之后,管理员似乎隐约提到了单引号和双引号不同,于是尝试’/>alert(‘xss’),就成功了。和之前一样,应该还是模拟环境的坑,实际中要多尝试才行。

 


目前只刷完basic的题,后面的题目会在完成后持续进行更新。

 

你可能感兴趣的:(security,ctf,安全)