首页 > 其他 > 详细

BUUCTF Re部分wp(七)

时间:2020-07-30 19:30:28      阅读:126      评论:0      收藏:0      [点我收藏+]

突然产生了一种连载的感觉。。。

[网鼎杯 2020 青龙组]jocker

32exe,题目本身不难

技术分享图片

输入长18h,之后有一段smc,不管直接动调得到解密后的__Z7encryptPc

__Z7encryptPc的栈指针有点问题,需要稍微修改一下

技术分享图片

逻辑简单,但是少五个值,找到__Z7finallyPc

技术分享图片

之后我也不知道为啥是与71异或,我的脑洞大概不太够,不过除去最后的”}“只有4位未知,爆破应该也可以

a="hahahaha_do_you_finGGGGG"
b="0e 0d 09 06 13 05 58 56 3e 06 0c 3c 1f 57 14 6b 57 59 0d 25 74 70 26 3a"
b=b.split()
for i in range(len(b)):
    print(chr(ord(a[i])^eval("0x"+b[i])),end="")

[V&N2020 公开赛]h01k_re

32exe,这里有许多反调,nop掉

技术分享图片

关键在于

技术分享图片

跟进去可找到

技术分享图片

 这里是vm,opcode在

技术分享图片

 同时有两组长为16的特殊数据,

 技术分享图片

 技术分享图片

 对这两处以及输入下断,可分析得到逻辑为输入异或0x33后加2再与v34异或,最后结果与v163比较

[MRCTF2020]EasyCpp

64elf,输入九个数字

技术分享图片

此处对输入的数字^1

技术分享图片 

depart里通过递归进行了某种操作使是输入分成了多个由空格分割的数字,经测试发现多个数相乘即为输入^1,之后在lambda里进行了替换

对比的值在

技术分享图片

c=[zqE=z=z=z,lzzE,ll=T=s=s=E,zATT,s=s=s=E=E=E,EOll=E,lE=T=E=E=E,EsE=s=z,AT=lE=ll]
t="OlzEAsGTBq"
p=[]
flag=[]
for i in c:
    temp=""
    for j in i:
        if j=="=":
            temp+=" "
        else :
            temp+=str(t.index(j))
    p.append(temp)
for i in p:
    i=i.split()
    f=1
    for j in i:
        f*=eval(j)
    flag.append(f^1)
print(flag)

[WUSTCTF2020]funnyre

64位elf,找到main

技术分享图片

里面数据都很类似,有一些花,不太影响

技术分享图片

 技术分享图片

 前半部分异或,后半部分加法,异或中间插了一条not和一条add,最后与unk_4025C0比较

技术分享图片

写个idapython

addr = 0x4005b0
b1=[]
b2=[]
c="D9 2C 27 D6 D8 2A DA 2D  D7 2C DC E1 DB 2C D9 DD 27 2D 2A DC DB 2C E1 29  DA DA 2C DA 2A D9 29 2A"
c=c.split()
for i in range(len(c)):
    c[i]=eval("0x"+c[i])
while(addr<0x401db3):
    next_addr = NextHead(addr)
    if "byte ptr [rdx+rax+5]" in GetDisasm(addr):
        if "xor" in GetDisasm(addr):
            b1.append(GetOpnd(addr,1))
        if "add" in GetDisasm(addr):
            b2.append(GetOpnd(addr,1))
        addr = next_addr
    else:
        addr = next_addr
        
b1.reverse()
b2.reverse()
for i in range(len(c)):
    for j in b2:
        if "h" in j:
            c[i]-=eval("0x"+j[:-1])
        else:
            c[i]-=eval(j)
    c[i]+=0x80
    for k in range(len(b1)):
        if "h" in b1[k]:
            c[i]^=eval("0x"+b1[k][:-1])
        else:
            c[i]^=eval(b1[k])
        if b1[k]=="0C9h":
            c[i]-=0x80
        if b1[k]=="0F9h":
            c[i]=~c[i]
    c[i]=c[i]&0xfffor i in range(len(c)):
    c[i]=chr(c[i])
print c

[MRCTF2020]VirtualTree

这题的源码给了,不详细说了

题目用了个二叉树,加密为以下两个函数

技术分享图片

都比较简单,有几处简单的花也没什么影响 ,调着看就行

[UTCTF2020]png2

一张图片,开头告诉了高度和宽度,以raw打开修改高和宽,得到flag

[watevrCTF 2019]Timeout

64elf,拖进ida

技术分享图片

genearte为flag所在处,明文,打个补丁得到flag

技术分享图片

[watevrCTF 2019]Repyc

python逆向,uncompyle6

佤 = 0= ~佤 * ~佤
俴 = 侰 + 侰

def ?(?):
    ? = 佤
    ? = 佤
    ? = [
        佤] * 俴 ** (俴 * 俴)
    ? = [
        佤] * 100
    ? = []
    while ?[?][佤] != \xeb\x93\x83:
        ? = ?[?][佤].lower()
        亀 = ?[?][侰:]
        if ? == \xeb\x89\x83:
            ?[亀[佤]] = ?[亀[侰]] + ?[亀[俴]]
        elif ? == \xeb\xa0\x80:
            ?[亀[佤]] = ?[亀[侰]] ^ ?[亀[俴]]
        elif ? == \xeb\xa0\xb3:
            ?[亀[佤]] = ?[亀[侰]] - ?[亀[俴]]
        elif ? == \xeb\x83\x83:
            ?[亀[佤]] = ?[亀[侰]] * ?[亀[俴]]
        elif ? == \xeb\xa2\xaf:
            ?[亀[佤]] = ?[亀[侰]] / ?[亀[俴]]
        elif ? == \xeb\xa5\x87:
            ?[亀[佤]] = ?[亀[侰]] & ?[亀[俴]]
        elif ? == \xeb\xa7\xb3:
            ?[亀[佤]] = ?[亀[侰]] | ?[亀[俴]]
        elif ? == \xea\xb4\xa1:
            ?[亀[佤]] = ?[亀[佤]]
        elif ? == \xeb\xab\x87:
            ?[亀[佤]] = ?[亀[侰]]
        elif ? == \xea\xbc\x96:
            ?[亀[佤]] = 亀[侰]
        elif ? == \xeb\xab\xbb:
            ?[亀[佤]] = ?[亀[侰]]
        elif ? == \xeb\x94\x93:
            ?[亀[佤]] = ?[亀[侰]]
        elif ? == \xeb\x8c\x92:
            ?[亀[佤]] = 佤
        elif ? == \xeb\xac\x87:
            ?[亀[佤]] = 佤
        elif ? == \xeb\xac\x9f:
            ?[亀[佤]] = input(?[亀[侰]])
        elif ? == \xea\xbd\xba:
            ?[亀[佤]] = input(?[亀[侰]])
        elif ? == \xeb\x8f\xaf:
            print(?[亀[佤]])
        elif ? == \xeb\xad\x97:
            print(?[亀[佤]])
        elif ? == \xeb\xad\xbf:
            ? = ?[亀[佤]]
        elif ? == \xeb\xae\x93:
            ? = ?[亀[佤]]
        elif ? == \xeb\xae\xb3:
            ? = ?.pop()
        elif ? == \xeb\xaf\x83 or ?[亀[侰]] > ?[亀[俴]]:
            ? = 亀[佤]
            ?.append(?)
            continue
        elif ? == \xea\xbd\xb2:
            ?[7] =for i in range(len(?[亀[佤]])):
                if ?[亀[佤]] != ?[亀[侰]]:
                    ?[7] = 侰
                    ? = ?[亀[俴]]
                    ?.append(?)
        elif ? == \xea\xbe\xae:
            ? = ‘‘
            for i in range(len(?[亀[佤]])):
                ? += chr(ord(?[亀[佤]][i]) ^ ?[亀[侰]])
            
            ?[亀[佤]] = ?
        elif ? == \xea\xbf\x9a:
            ? = ‘‘
            for i in range(len(?[亀[佤]])):
                ? += chr(ord(?[亀[佤]][i]) - ?[亀[侰]])
            
            ?[亀[佤]] = ?
        elif ? == \xeb\x96\x87 or ?[亀[侰]] > ?[亀[俴]]:
            ? = ?[亀[佤]]
            ?.append(?)
            continue
        elif ? == \xeb\x97\x8b or ?[亀[侰]] > ?[亀[俴]]:
            ? = ?[亀[佤]]
            ?.append(?)
            continue
        elif ? == \xeb\x98\xb7 or ?[亀[侰]] == ?[亀[俴]]:
            ? = 亀[佤]
            ?.append(?)
            continue
        elif ? == \xeb\x9a\xab or ?[亀[侰]] == ?[亀[俴]]:
            ? = ?[亀[佤]]
            ?.append(?)
            continue
        elif ? == \xeb\x9d\x87 and ?[亀[侰]] == ?[亀[俴]]:
            ? = ?[亀[佤]]
            ?.append(?)
            continue
        ? += 侰

?([
    [
        \xea\xbc\x96,
        佤,
        Authentication token: ],
    [
        \xea\xbd\xba,
        佤,
        佤],
    [
        \xea\xbc\x96,
        6,       á×äÓâæíäàßåÉÛãåäÉÖÓÉäàÓÉÖÓåäÉÓÚÕæïèäßÙÚÉÛÓäàÙÔÉÓâæÉàÓÚÕÓÒÙæäàÉäàßåÉßåÉäàÓÉÚÓáÉ·Ôâ×ÚÕÓÔɳÚÕæïèäßÙÚÉÅä×ÚÔ×æÔÉ×Úïá×ïåÉßÉÔÙÚäÉæÓ×ÜÜïÉà×âÓÉ×ÉÑÙÙÔÉâßÔÉÖãäÉßÉæÓ×ÜÜïÉÓÚÞÙïÉäàßåÉåÙÚÑÉßÉàÙèÓÉïÙãÉáßÜÜÉÓÚÞÙïÉßäÉ×åáÓÜÜ\x97ÉïÙãäãÖÓ\x9aÕÙÛ\x99á×äÕà©â«³£ï²ÕÔÈ·±â¨ë],
    [
        \xea\xbc\x96,
        俴,
        俴 ** (3 * 俴 + 侰) - 俴 ** (俴 + 侰)],
    [
        \xea\xbc\x96,
        4,
        15],
    [
        \xea\xbc\x96,
        3,
        侰],
    [
        \xeb\x83\x83,
        俴,
        俴,
        3],
    [
        \xeb\x89\x83,
        俴,
        俴,
        4],
    [
        \xea\xb4\xa1,
        佤,
        俴],
    [
        \xeb\x8c\x92,
        3],
    [
        \xea\xbe\xae,
        6,
        3],
    [
        \xea\xbc\x96,
        佤,
        Thanks.],
    [
        \xea\xbc\x96,
        侰,
        Authorizing access...],
    [
        \xeb\x8f\xaf,
        佤],
    [
        \xeb\x94\x93,
        佤,
        佤],
    [
        \xea\xbe\xae,
        佤,
        俴],
    [
        \xea\xbf\x9a,
        佤,
        4],
    [
        \xea\xbc\x96,
        5,
        19],
    [
        \xea\xbd\xb2,
        佤,
        6,
        5],
    [
        \xeb\x8f\xaf,
        侰],
    [
        \xeb\x93\x83],
    [
        \xea\xbc\x96,
        侰,
        Access denied!],
    [
        \xeb\x8f\xaf,
        侰],
    [
        \xeb\x93\x83]])

vm题,经过分析可得到逻辑

L1[0] = Authentication token: 
L2[0] = input(L1[0])
L1[6]=á×äÓâæíäàßåÉÛãåäÉÖÓÉäàÓÉÖÓåäÉÓÚÕæïèäßÙÚÉÛÓäàÙÔÉÓâæÉàÓÚÕÓÒÙæäàÉäàßåÉßåÉäàÓÉÚÓáÉ·Ôâ×ÚÕÓÔɳÚÕæïèäßÙÚÉÅä×ÚÔ×æÔÉ×Úïá×ïåÉßÉÔÙÚäÉæÓ×ÜÜïÉà×âÓÉ×ÉÑÙÙÔÉâßÔÉÖãäÉßÉæÓ×ÜÜïÉÓÚÞÙïÉäàßåÉåÙÚÑÉßÉàÙèÓÉïÙãÉáßÜÜÉÓÚÞÙïÉßäÉ×åáÓÜÜ\x97ÉïÙãäãÖÓ\x9aÕÙÛ\x99á×äÕà©â«³£ï²ÕÔÈ·±â¨ë
L1[2] = 120
L1[4] = 15
L1[3] = 1
L1[2] = L1[2] * L1[3]
L1[2] = L1[2] + L1[4]
L1[0] = L1[2]
L1[3] = 0

e = ‘‘
for i in range(len(L1[6])):
    e += chr(ord(L1[6][i]) ^ L1[3])
L1[6] = e

L1[0] = Thanks.
L1[1] = Authorizing access...
print(L1[0])
L1[0] = L2[0]

e = ‘‘
for i in range(len(L1[0])):
    e += chr(ord(L1[0][i]) ^ L1[2])#135
L1[0] = e

e = ‘‘
for i in range(len(L1[0])):
    e += chr(ord(L1[0][i]) - L1[4])#15
L1[0] = e

L1[5] = 19

L1[7] = 0
for i in range(len(L1[0])):
    if L1[0] != L1[6]:
        L1[7] = 1
        a = L1[5]
        L3.append(a)
print(L1[1])

其实这题有一点小问题,如果输入为空也会验证成功

技术分享图片

[ACTF新生赛2020]fungame

感觉有点脑洞题

技术分享图片

 

 有个异或,但结果不是flag,在函数中随意翻翻,找到

技术分享图片

 

base64得到提示也是pwn

技术分享图片

 

此处没控制长度,所以可以输入跳到到指定地址

所以flag为解异或的值+地址+解base64的值

BUUCTF Re部分wp(七)

原文:https://www.cnblogs.com/harmonica11/p/13262434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!