2019独角兽企业重金招聘Python工程师标准>>>

终于走上正轨,也只能回来做题了,继续我的Whal CTF之旅。

这个题目很简单,只是有几个坑点而已。

  •  [rbp+var_10]放置argv指针,[rbp+var_18]+8=argv[1],即获取到传入程序的参数指针
  •   这几个指令操作数,全涉及到寄存器的最低八位,所以计算的结果需要进行处理,即python代码中将计算结果进行 result & 255操作,同时也要注意sar是算术右移,shl是逻辑左移,此处并没有针对逻辑位移和算术位移操作符的坑,所以可以忽略他们的差别。
  • 最终Python解码,我还是愚笨的采用了穷举,如有他法,敬请赐教。
    def verify(src_byte, index, dst_byte):mov_l_bits = ((index ^ 9) & 3) & 255mov_r_bits = (8 - ((index ^ 9) & 3)) & 255tmp_byte = (src_byte ^ index) & 255result1 = tmp_byte << mov_l_bitsresult2 = tmp_byte >> mov_r_bitsresult3 = ((result1 | result2) & 255) + 8result3 = result3 & 255if dst_byte == result3:return 1else:return 0def decode(dst_str):for i in range(len(dst_str)):for j in range(0, 255, 1):if 1 == verify(j, i, ord(dst_str[i])):print(chr(j), end='')breakprint('\n')encrypted_str = '\xca\x70\x93\xc8\x06\x54\xd2\xd5\xda\x6a\xd1\x59\xde\x45\xf9\xb5\xa6\x87\x19\xa5\x56\x6e\x63'
    decode(encrypted_str)
    

转载于:https://my.oschina.net/u/3281747/blog/1834528

ais3_crackme 踩坑解析相关推荐

  1. STM32使用ADC+DMA进行多通道模拟量采集 (踩坑及傻瓜式解析)

    STM32使用ADC+DMA进行多通道模拟量采集 (踩坑及通俗解析) ​ 利用STM32的片上外设可采集多个模拟量(如传感器数值),并在嵌入式程序中使用.如果只使用了一个通道,用时令ADC转换而后读取 ...

  2. Android Kotlin Gson解析踩坑记录

    一.背景 一般我们在进行网络请求拿到返回结果之后,我们期望能够转化成对应的Java实体类,在这个转化过程中,可以使用自动解析的方式,也可以使用三方提供的工具类,比如Gson.FastJson等. 针对 ...

  3. 一次 Scan 竟耗时上百秒?Redis Scan 原理解析与踩坑

    来自:指月 https://www.lixueduan.com 原文:https://www.lixueduan.com/post/redis/redis-scan/ 主要分析了 Redis Scan ...

  4. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  5. 【Vue】Vue1.0+Webpack1+Gulp项目升级构建方案的踩坑路

    最近半年在维护公司的一个管理后台项目,搭建之初的技术栈比较混乱,构建方案采用了Gulp中调用Webpack的方式,Gulp负责处理.html文件,Webpack负责加载.vue..js等.而在这一套构 ...

  6. Antd Vue range-picker 日期初始值设置 与 重置日期踩坑总结

    一.业务场景: 1.用form表单包裹,用的是 Antd Vue range-picker链接 2.创建时间初始值设置为当天的 00:00:00-23:59:59:如下截图: 2.日期选择器如下截图: ...

  7. cannot resolve symbol r_64位ret2_dl_runtime_resolve模版题以及踩坑记录

    什么是ret2dl攻击 当程序在第一次加载某个函数的时候,got表中对应的表项还没有写入真实的地址(因为是第一次调用),所以这个时候就需要调用_dl_runtime_resolve函数将真实的地址写入 ...

  8. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  9. java用毫秒数做日期计算的一个踩坑记录

    错误示例: Date today = new Date(); Date nextMonth = new Date(today.getTime() + 30* 1000*60*60*24); print ...

最新文章

  1. SpringMVC整合fastdfs-client-java实现web文件上传下载
  2. 自动化测试,从入门到放弃
  3. ReentrantLock实现原理深入探究
  4. 【Linux】一步一步学Linux——perl命令(264)
  5. Value Investment
  6. gensim中文处理
  7. php无法创建cookie,php-curl cookie无法成功创建
  8. 存储器间接寻址方式_8086中的数据存储器寻址模式
  9. inventor如何钣金出弧面_Inventor教程之钣金多规则
  10. 数据开放 数据集_您可以使用开放数据做什么?
  11. 【华为云技术分享】《跟唐老师学习云网络》—我的网络概念
  12. 接手线上Mysql服务器,我们需要做什么?
  13. frame边框阴影html,CSS阴影效果的比较之drop-Shadow与box-Shadow
  14. Python 显示实时时间方法
  15. 解决tomcat中文乱码问题的方案
  16. ue4-材质编辑器material
  17. VCC、 VDD、VSS、VEE 电压符号的解释
  18. gym:Problem A Artwork(并查集思维题)
  19. 在php中 var什么意思,php关键字”var”的作用是什么?
  20. 一个软件开发者的历史 走在法律的边缘

热门文章

  1. html+css制作简历
  2. 盛世昊通:数字汽车的未来由谁来书写
  3. 浏览器f12, ::before ::after是什么意思?
  4. 个人计算机中的防毒软件无法防御,win10系统中无法启动defender防御软件的处理办法...
  5. 在低谷期应该做点什么
  6. 远程桌面突然断开的处理办法
  7. java 用遗传算法解决图像二值化问题 找阈值
  8. 5G承载网络技术发展趋势
  9. 每任务-苹果应用市场隐私政策
  10. matlab中绘制一个sin函数曲线