首页 > 其他分享 >CTFshow Reverse 36D杯 BBBigEqSet wp

CTFshow Reverse 36D杯 BBBigEqSet wp

时间:2023-11-16 11:57:55浏览次数:30  
标签:lea text 36D mov rbp eax CTFshow wp rax

用ida打开程序,一点点看汇编,发现似乎是机器生成的,先是输入0x80长的flag,然后有0x80段运算,运算的内容是每一个字符乘一个系数相加后与一个数比较。

查看代码
.text:0000000000001175                 push    rbp
.text:0000000000001176                 mov     rbp, rsp
.text:0000000000001179                 sub     rsp, 100h
.text:0000000000001180                 lea     rdi, format     ; "Give me Flag:"
.text:0000000000001187                 mov     eax, 0
.text:000000000000118C                 call    _printf
.text:0000000000001191                 lea     rax, [rbp+s]
.text:0000000000001198                 mov     rsi, rax
.text:000000000000119B                 lea     rdi, a128s      ; "%128s"
.text:00000000000011A2                 mov     eax, 0
.text:00000000000011A7                 call    ___isoc99_scanf
.text:00000000000011AC                 lea     rax, [rbp+s]
.text:00000000000011B3                 mov     rdi, rax        ; s
.text:00000000000011B6                 call    _strlen
.text:00000000000011BB                 cmp     rax, 80h
.text:00000000000011C1                 jnz     loc_4965D
.text:00000000000011C7                 movzx   eax, [rbp+s]
.text:00000000000011CE                 movsx   eax, al
.text:00000000000011D1                 imul    edx, eax, 9421h
.text:00000000000011D7                 movzx   eax, [rbp+var_FF]
.text:00000000000011DE                 movsx   eax, al
.text:00000000000011E1                 imul    eax, 60CDh
.text:00000000000011E7                 add     edx, eax
.text:00000000000011E9                 movzx   eax, [rbp+var_FE]
.text:00000000000011F0                 movsx   eax, al
.text:00000000000011F3                 imul    eax, 4BCFh

第1步是要在程序里把这些数字取出来,由于这里的程序是完全相同的,只是数字不同。所以直接取的字节。

第2步把这些东西运行行列式运算,由于行列式的这种运算有固定解法(不是暴力)所以秒出结果。

这里需要注意一点,linalg运算结果是x[][] 并且结果是用浮点数表示,所以用round对其取整

def u32(a):
    return a[3]<<24 | a[2]<<16 | a[1]<<8 | a[0]
#1
data = open('BBBigEqSet', 'rb').read()[0x11c7:0x11c7+ 0x909*0x80]
print(hex(len(data)))
taba = []
tabb = []
for i in range(0x80):
    stab=[0]*0x80
    ptr = 12
    for j in range(0x80):
        stab[j] = u32(data[ptr: ptr+4])
        ptr+=18
        if j==0:
            ptr-=2
    ptr -= 11
    taba.append(stab)
    tabb.append(u32(data[ptr: ptr+4]))
    data = data[0x909:]
 
print(taba, tabb)
 
#2
import numpy as np
an = np.array(taba)
bn = np.array(tabb)
 
x = np.linalg.solve(an,bn)
print(x)
print(bytes([round(i) for i in x]))

得到flag{Soooo000_LooOOOOOOOOggO99g99_s1muLtaNeOus_EEEQuat10n5_Y0UUUUUUuuu_cAA44AANNnnN_SOOOOOOLVE_IT17TT11771ITIT!!!_8ShotDshP90ab}

标签:lea,text,36D,mov,rbp,eax,CTFshow,wp,rax
From: https://www.cnblogs.com/ethan269/p/ctfshow_re22.html

相关文章

  • WPF中设置RichTextBox的行间距
    可以通过设置Paragraph的LineHeight属性来达到设置行间距的效果。privatevoidUpdateTranslate(RichTextBoxtbx,IEnumerable<BaiduTranslateInfo>items){tbx.Document.Blocks.Clear();if(items.IsNullOrEmpty())return;Paragraphpara=newPara......
  • WPS word制作不同样式水平线的快捷方法
    shift键+~键插入三个【~】符号,然后按下键盘上的回车键,之后就会显示出一条波浪线。输入三个【=】符号,之后再按下键盘上的enter键,一条粗的直线。输入三个【*】符号,并且用同样的操作方法,按下回车键,就会得到一个小黑点的水平线线条。输入三个【---】符号,按下回车键,得到一条细直线......
  • WPF动画之移动淡出淡入
    publicvoidShowAnimation(){//动画时间varduration=newDuration(TimeSpan.FromSeconds(0.3)); //移入vardoubleAnimation=newDoubleAnimation{Duration=duration,To=0......
  • 直播平台制作,ViewPager自动轮播,手指按住停止轮播
    直播平台制作,ViewPager自动轮播,手指按住停止轮播对viewpager做一个触摸监听即可。然后判断下up和down事件 //通过监听onTouch事件,设置一个标签isLoop;手指按下时isLoop=false,手指抬起后isLoop=true;    mViewPager.setOnTouchListener(newView.OnTouchListener(......
  • WPF TextBox 允许输入数字及字母的工具类
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Text.RegularExpressions;usingSystem.Windows.Controls;usingSystem.Windows.Input;namespace命名空间{///<summary>///TextBox输入控制///&......
  • 01 WPF-HelloWorld
    01HelloWorld简介WPF全称:WindowsPresentationFoundationWindows用户界面框架,统一的编程模型、语言和框架,做到了界面设计与后端开发分离。特点:呈现效果不受分辨率的影响基于DirectX3d技术,可以做出炫酷的界面提供UI框架,集成了矢量图形、流动文字支持、3d视觉效果和控件......
  • (原创)安卓快速使用简单的ViewPager
    原创声明:本文所有图片和代码皆由本人制作和编写。目录前言目标与效果4步走第一:在布局文件添加ViewPager组件第二:为ViewPager设计布局第三:创建适配器类第四:把布局文件和适配器跟主活动联系起来后记前言这学期刚开的安卓课程,为了写实验上网查资料,只想找简明扼要的教程来让我快速......
  • “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 WP
    CryptoBabyRSA共模攻击题目附件:fromgmpy2import*fromCrypto.Util.numberimport*flag='flag{I\'mnotgonnatellyoutheFLAG}'#这个肯定不是FLAG了,不要交这个咯p=getPrime(2048)q=getPrime(2048)m1=bytes_to_long(bytes(flag.encode()))......
  • Buuctf-Crypto-之深夜刷题部分wp
    萌萌哒的八戒首先下载好附件,解压,是一幅猪图,图的下方是一串看不懂的字,百度输入关键词猪、密码,可知这是猪圈密码,手撸得WHENTHEPIGWANTTOEAT大写不对,换成小写。whenthepigwanttoeat传统知识+古典密码首先下载好附件,解压:小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳......
  • 界面控件DevExpress WPF Splash Screen,让应用启动画面更酷炫!
    DevExpressWPF的SplashScreen组件可以为应用程序创建十分酷炫的启动屏幕,提高用户在漫长的启动操作期间的体验!P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用......