web安全CTF比赛习题(中级)

一、VLD

小编又来了,一如既往的访问目标网址,一句英文,什么鬼?回答还是False,为什么不是Ture呢?因为一脸懵逼啊。。。。尴尬癌。。。
web安全CTF比赛习题(中级)_第1张图片
VLD是什么呢?
VLD(Vulcan Logic Dumper)是一个在Zend引擎中,以挂钩的方式实现的用于输出PHP脚本生成的中间代码(执行单元)的扩展。
小编也比较菜,搞不懂,只有靠各位自食其力了,哈哈哈哈。

访问“index.php.txt”,这应该就是VLD的应用了,看起来有点累,小编瞌睡快来了
web安全CTF比赛习题(中级)_第2张图片
分析代码,存在三个flag信息,运用“GET”方式传递参数(麻烦但还是得做),小编也去试了试,一个zip压缩包,访问下载,发现是一些源码文件。
web安全CTF比赛习题(中级)_第3张图片
查看源码文件,进行代码审计,轻松找到在“login.php”代码中存在注入漏洞(还好不复杂,不然小编想想就要准备放弃了)
web安全CTF比赛习题(中级)_第4张图片
继续分析代码,可以发现对传入的参数“username”做了 一定的过滤措施,首先调用了“safe_data()”函数,那么“safe_data()”函数又是什么作用呢?
原来是在函数中再调用了addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
web安全CTF比赛习题(中级)_第5张图片
好的,继续分析,可以看到小编用红色框框起来的两条代码。
第一条呢,是一个三目运算,判断传入的“number”参数是不是数字,是的话就正常传入,不是就替换成1传入
第二条呢,判断传入的“username”中有没有存在与传入的“number”相同的数字,有的话替换为空
web安全CTF比赛习题(中级)_第6张图片
大致的审计就做到这里了,小编接下来得进行SQL注入了,URL访问登录界面,burp抓包进行注入查看当前的数据库信息
web安全CTF比赛习题(中级)_第7张图片
接下来就是查询存在哪些数据库,库中有哪些表,表中有哪些列,小编就不一一赘述了(小编懒癌患了),直接查询flag信息
web安全CTF比赛习题(中级)_第8张图片
此处的flag信息显示不完整,我们可以使用“substr()”函数分段显示
OK!!!flag信息拿到手了
web安全CTF比赛习题(中级)_第9张图片

二、GetFlag

访问目标网址,满屏都是打招呼,热情的小编都不好意思了,不过那一句“single dog”小编就不怎么爱听了(明明是单身贵族好伐)
web安全CTF比赛习题(中级)_第10张图片
不过既然叫我们登录,那就乖乖登录呗,不够这次查看源代码是没什么用了,抓包看了看也没啥用,再想想有什么办法?要不来个万能密码登录,说试就试。
这里有个验证码(甚是烦人),经过MD5加密,在经过substr()函数截取,然后要输入未加密之前的(真的很曲折)。python代码获取验证码

import requests,hashlib
import sys,re,string

a=string.lowercase+string.digits+string.uppercase
c=""
for i in a :
    for j in a:
        for l in a:
            for k in a :
                for h in a:
                    c=i+j+l+k+h
                    b=hashlib.md5(c).hexdigest()
                    if b[0:6]=="b93ac7":
                        print c
                        break

web安全CTF比赛习题(中级)_第11张图片
好的,登录成功,出现三个文件,下载查看,告知flag文件在网站根目录下,访问发现的确存在,但没有内容回显。
回到三个文件的网页查看网页源代码,找到文件的下载路径,将“flag.php”文件下载下来,查看源码
web安全CTF比赛习题(中级)_第12张图片
可以看到,POST方式传参,并对所传参数进行了判断
web安全CTF比赛习题(中级)_第13张图片
访问“flag.php”,POST传入参数“flag=flag;”,burp抓包访问,得到flag信息(网页访问内容被解析,无法查看)
web安全CTF比赛习题(中级)_第14张图片

三、天下武功唯快不破

访问目标网址,一段php代码,代码审计开始。
设置了一个cookie名为“token”,并且赋值为“hello”
判断传入的cookie是否值为“hello”
是,将“flag.php”文件读入到一个字符串中,并赋给变量“txt”
创建一个文件,文件名【’u/’.md5(mt_rand(1,1000)).’.txt’】随机生成
将“txt”的数据内容写入到创建的文件中
延时10S后,删除创建的文件
web安全CTF比赛习题(中级)_第15张图片
ok,代码审计完成,意思就是我们要在10S以内,找到生成的文件,并且访问才能得到flag信息。
爆破文件名python代码如下

import requests
import re
import md5

for i in range(0,1001):
    m1 = md5.new()
    m1.update(str(i).encode(encoding='utf-8'))
    url='http://106.75.26.211:3333/u/'+m1.hexdigest()+'.txt'
    r = requests.get(url)
    if(r.status_code!=404):
        print i
        print url
        print r.status_code
        print r.text
        break
    else:
        print i
        print "404"

运行此代码,不停地刷新网页,即可得到flag信息
web安全CTF比赛习题(中级)_第16张图片

你可能感兴趣的:(web安全CTF比赛习题(中级))