2018 ISCC re\web\misc WP

RE

RSA256

RSA 上工具

RsaCtfTool.py --publickey ./key.pub –private

公钥比较简单,直接解除对应私钥

然后 openssel

 

 

 

My math is bad

IDA 输入字符串比较一下

 

解方程呗先做第一段用 sympy

1869639009, 1801073242, 829124174, 862734414 求出来转 16 进制,因为内存小端序,各段再倒序

ampoZ2ZkNnk1NHl3 后半段同样,拼接后的

ampoZ2ZkNnk1NHl3NTc0NTc1Z3NoaGFG

 

输进去就完事了

 

 

 

Leftleftrightright

IDA 没找到运行后的字符串,放 PEID 看一下

 

有壳

在 OD 中每次运行是初始地址都会边,去掉 ASLR OK,开始脱壳找到 OEP,dump下来

 

OEP:0X24C7

然后用 LordPE dump 出完整映像,再用 ImportREC 输入我们得到的 OEP,自动扫描了之后点击获取输入表就能得到这些函数了 Fix Dump,用我们之前 dump 出的映像就能成功修复文件了

 

 

再次 IDA 就找到字符串咯

 

 

然后分析找到 flag 的比较函数在这里用 OD 打开,在输入函数处下断,我在这里输入了: 

0123456789abcdefghijklmnopqrs 

一共 29 个字符,然后再用 OD 跟进到 flag 比对函数内部,看到我之前输入的字符串的顺序被打乱成这样: 

edfgcbhia9jk87lm65no43pq21rs0 

好啦,把对应的字符串打乱输出就好咯

Flag{this_was_simple_isnt_it}  

 

 

obfuscation and encode

IDA 走一波,重要的函数主要就两个

fencode 和encode,然后和字符串 lUFBuT7hADvItXEGn7KgTEjqw8U5VQUq 比较对了就行

 

然后我们首先来看 fencode,一大堆 while,啥东西,苦苦,估计就是混淆用的吧,找找看上去有用的哟


这两段格外的醒目,就他们了,但是怎么着联系呢,在一大堆长传数字中,找了几个小数字,

24,6,4,4,努力还原一下

 

t = 0 len = len(a1) if (len ==24) 

for (int i = 0; i<6;i++)    for (int j = 0; j<4;j++)    {

             for (int k = 0; k<4; k++)                   v10+= *(a + 4 * i + k) * *(m + 4 * j + k)           a2 + (t++) = v10 % 127

            v10 = 0

        }

}

 

然后是encode,根据三个字符变四个的特点判断它可能是base64,但是把 lUFBuT7hADvItXEGn7KgTEjqw8U5VQUq解密回去后发现是乱码,应该是做了手脚,

ALPHA_BASE点进去看一下,发现……

 

Emmmmm……编码数组换掉了…………那跑一遍吧…… 编号后爆破爆破

 

OK啦

 

 

MISC

What is that?

看到手指往下指,下意识的改变高,OK 了 


 数字密文

明显的 base16,解密得 flag

秘密电报

明显的培根密码,在线解密得 flag

 重重谍影

多重 base64,解到 U2FsdGVkX183BPnBd50,发现是 AES 加密的标志,然后拖在线解密,

ECB,无密码,最后是佛加密

有趣的 ISCC

图片用 Winhex 打开,在最后找到一串 Unicode 编码,”&#92;”就是这种形式,然后上站长之家,解两次 Unicode 就拿到 flag 了

Where is the FLAG?

用 010editer 打开,可以看到 Adobe Firework CS5,只能装一个了,打开,看到右下角有多个图层,最后拼出一张二维码,扫完得到 flag

凯撒十三世

根据题目信息,用 rot13 解密,然后跟键盘有关,试了各种的都不对,最后发现是对应的下一行的键(可以说是很刺激了)

一只猫的心思

首先拿到一张图片,010editer 打开,头没问题,尾部不是 FFD9,查找一波,发现图片最后还藏了一个 doc 文件,手动取出 doc 文件,打开又是一堆中文,目测佛加密,如是我闻解密再一套 base 全家桶拿到 flag F1a9_is_I5cc_ZOl8_G3TP01NT

暴力 xx 不可取

先是伪加密,打开以后得到一个 flag.txt,然后再走一波凯撒,flag 很明显 key:13 result:isccwearecoming

嵌套 ZIPs

这题的第一关可以说是非常坑了,首先没有提示,全靠猜 11 位的电话号码做密码,强行爆破(脑洞巨大),第二关明显对的明文攻击,第三关就是一个伪加密,最后拿到 flag

Web

比较数字大小

前端做了传输长度限制,修改 maxlength 为 999

 提交得到 flag 


 

Web01

php 弱类型,strcmp函数的参数一个是数组一个是字符串是永远返回 null,又因为是双== 所以 null==0==false Poc:password[]=1

为什么这么简单啊

首先要求从 https://edu.xss.tv 进入且 ip 为 110.110.110.110, Burp 抓包修改请求头

 

获得第二关地址,F12,发现一个 password.js 的文件,打开看代码,发现是 js 的 eval 加密,很明显的是

ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAHAAYQBzAHMAdwBvAHIAZAA6AHgAaQBuAHkAaQ BqAGkALgBjAG8AbQAiACkAPAAvAHMAYwByAGkAcAB0AD4

这一段字符串是经过加密的,执行一遍 eval 加密就会发现这个是加密后的字符串,再 base64

解密一下得到 password:xinyiji.com 提交密码得到 flag

本地的诱惑

根据页面提示,加一个 XFF 头,如下

 

然后,获得 flag

你能跨过去吗?

虽 然 我 不 是 很 懂 xss , 但 是 这 个 字 符 串 不 太 对 劲 我 还 是 看 的 出 来的%2b/v%2b%20%2bADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAGsAZQB5ADo

ALwAlAG4AcwBm

AG8AYwB1AHMAWABTAFMAdABlAHMAdAAlAC8AIgApADwALwBzAGMAcgBpAHAAdAA%2 bAC0-

Url 解码以后发现是 UTF-7,解密

+/v+ <script>alert("key:/%nsfocusXSStest%/")</script>将/%nsfocusXSStest%/提交,弹窗送 flag 

 

有个文件忘记删了

明显源码泄露,

存在:http://118.190.152.202:8009/index.php.txt

 

看到$$ 想到变量覆盖构造 poc:

 

Web02

提示 ip 要是 127.0.0.1 先试了一波 XFF,发现不行改成 Client-IP,get

flag

请 ping 我的 ip 看你 ping 的通吗?

先 get 传参传一个 ip=127.0.0.1 发现 ping 通了尝试截

断 %0a 成功 locate flag 

 

然后 cat /home/flag 拿到 flag

Please give me username andpassword!

传 username 和 password 过去后

发现多了一行注释

 

打开该路径,得到源码

 

构造poc:http://118.190.152.202:8017/?username[]=1&password=3e9  

flag{ISCC2018_Very_GOOD!}

php 是世界上最好的语言

审计代码,要求 password 的 md5 值为 0,只要加密结果是 0e 开头的都是满足的随便填一个,比如 QNKCDZO 成功登陆,并出现一个链接 

 

点击以后 

 

老套路了,poc:a=GLOBALS,得到flag

 

SQL 注入的艺术

 

注入题而且是 gb2312 编码,猜测宽字节注入测试没毛病,直接上自己写的脚本

 

Flag 就在注释中

试试看

抱 chrome 大腿一波,hctf 的原题,考正则的贪婪匹配,php 伪协议,和任意文件读取

poc:img=php://filter/convert.base64-encode/resource=1.jpg/convert.base64-encode/resource=../flag

得到 flag{1ntere5ting_PHP_Regu1ar_express1onssssss}

Sqli

注入题,经过测试发现 uname 存在注入点直接上脚本 


 最后拿到 flag{hahaha999999999}

Collide

标准的一道 hash 长度扩展攻击的题目

推荐去读 P 神的 hash 长度扩展和hashpump 的使用的那篇博文

Hash 长度扩展攻击需要知道前一次加密中未知数据的长度,以及前一次加密中知道的填充数据(如题目中的 guest),最后需要知道上一次加密的结果有现成的工具,因为 hash 函数是分块加密,而一段明文被分成的这些块之间的加密是有联系的,那就是前一个块加密的结果将作为下一个块的初始加密向量,而且扩充的规则是固定的,具体自行百度,所以我们就可以把题目中本来的key+“guest”扩充成大于一个块长度的字符串,这样就可以在不知道key 的情况下拿到 flag 了

 

 

Only admin can see flag

AES 的 CBC字节翻转攻击,原题一道,但是 CBC 字节翻转攻击还是需要学习一波的。

 首先当然是看源码了

 


这就是这份源码里面关键的内容,很明显我们得让 cookie[cipher]的解密结果和 post 传入的 username 值相同且全为 admin,这里不得不用 AES CBC 加密模式了,这个模式的加密,快和块之间是有联系的大概说一下

加密:第一块 E(P1 ^ iv)=C1 第二块 E(P2 ^ C1) = C2 解密:第一块 D(C1) ^ iv = p1 第二块 D(C2) ^ C1 = p2

我们很容易可以看出控制第一块的 C 可以有效的让第二块的 C 变成我们想要的任意结果我们可以自己通过 php 脚本生成序列化的明文 P,并从网页返回头里拿到明文 P 通过向量 iv 加密以后的结果的base64

P = "a:2:{s:8:\"username\";s:5:\"bdmin\";s:8:\"password\";s:5:\"admin\";}"

==P2 ^ C1 = D(C2)      D(2) ^ 我们想要的 P2 = newC1

这样我们就可以通过修改第一个块的密文来达到影响第二个块的解密结果的做用,类似的第 n-1 块的 cipher 可以影响到第 n 个快的plaintext 的值这题中我们的 username 值在第二个块,所以就是上述做法,然后将 cookie 中的 cipher 修改成我们微调过的 cipher 这时为了触发 check_login()的解密获取 Plaintext,我们必须不同时传 username password $_SESSION[‘username’]的值刚才已经产生了为了触发这一段函数 

这样我们就可以获得我们修改过后的密文解密后对应的明文了但是这是一个错误的结果,所以才被回显明文,因为在构造第二块密文输出为指定明文的时候,我们牺牲了第一块明文,导致第一块明文的解密结果错误,这时候就要在走一波套路了刚刚是通过修改第一块密文来达到输出指定的第二块明文,这次为了产生指定的第一块明文,只能修改 iv 的值了,还是上面的套路最终我的 poc iv=c2F5k0vi2fer8K4bIt88tw%3D%3D

cipher=6BaBxf478QSCs1ZsqgdF1GoSDZRa8boi3OD7RNc5nTlZcpxwikcIfDklujmmhIVdD6Upbct

N54MqQYHgo4r2pQ%3D%3D 最终拿到 flag 



猜你喜欢

转载自blog.csdn.net/qq_42192672/article/details/81009691