首页
社区
课程
招聘
[原创]青梅竹马 WriteUp from W8C.Cossack人人
发表于: 2019-3-16 01:52 2956

[原创]青梅竹马 WriteUp from W8C.Cossack人人

2019-3-16 01:52
2956

最终得到最小解0x1555d30f38b0dbcaec83c0f9L

最终得到PEDIy9102dreadyu,再加上程序对格式的要求,改为PEDIyV9102dVreadyu

module Main where

initN :: (Integer, Integer)
initN = (2, 5)

primes :: [Integer]
primes = filter (\k -> null [ x | x <- [2..k - 1], k `mod` x == 0]) [3..73]

getNextN :: (Integer, Integer) -> Integer -> (Integer, Integer)
getNextN (n1, n2) m = case take 2 $ filter (f m) [n1, n2..] of
    ~[a, b] -> (a, b)
    where 
        f :: Integer -> Integer -> Bool
        f m x = x ^ 83 `mod` m == 2

main :: IO ()
main = print $ fst $ foldl getNextN initN primes
package main

import (
    "encoding/base64"
    "fmt"
)

const (
    base64Table = "ABCyVPGHTJKLMNOFQRSIUEWDYZgbc8sfah1jklmnopqret5v0xX9wi234u67dz+/"
)

var coder = base64.NewEncoding(base64Table)

func base64Encode(src []byte) string {
    return coder.EncodeToString(src)
}
func main() {
    dec := "\x15\x55\xd3\x0f\x38\xb0\xdb\xca\xec\x83\xc0\xf9"
    fmt.Println([]byte(dec))
    plain := base64Encode([]byte(dec))
    fmt.Println(plain)
}
  • 先进入sub_402562,校验输入字符串格式,并通过魔改的base64解密字符串,传入sub_4024e1
  • 在sub_4024e1,生成素数表,获取3-73之间素数乘积,和base64解码数据一起传入sub_4020f1
  • sub_40206d为大数取模函数,sub_4017af为大叔相乘函数,学过信安数基的都知道,这里很明显是个高阶同余方程。
  • 同余方程解被sub_4021a7调用,而sub_4021a7是取出余数的函数
  • 通过取出的余数判断是否正确。进ollydbg强改数据发现余数是2的时候才能correct
  • 综上,整个程序逆向完成。问题总结为:x^83 == 2(mod20364840299624512075310661735)(此处手推循环。。累死)
  • 详情参考附件
  • 利用步进的方法搜索可能的答案。
  • 记y=x^83而n=3到73中所有素数的积,有y%n=2,所以对每一个在3到73中的素数p都有n%p=2。
  • 使p取遍3到73上的素数。
  • 先求解y%3=2的解,得到一个解集;再从中筛选出符合y%5=2的;再y%7=2的等等(由于这样的解是线性分布的所以可以依次筛,而且相当方便)。
  • 最后会得到一个解集,取最小的数即可。
  • 此处hs的实现使用了一个元组来表示解集。元组的两个元素分别是解集中最小的两个解。
  • 直接将新的base64码表传入构造函数NewEncoding(golang真优秀)
  • 解码上文haskell代码解密得到的数据(已转string)
  • 先进入sub_402562,校验输入字符串格式,并通过魔改的base64解密字符串,传入sub_4024e1
  • 在sub_4024e1,生成素数表,获取3-73之间素数乘积,和base64解码数据一起传入sub_4020f1
  • sub_40206d为大数取模函数,sub_4017af为大叔相乘函数,学过信安数基的都知道,这里很明显是个高阶同余方程。
  • 同余方程解被sub_4021a7调用,而sub_4021a7是取出余数的函数

  • [培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

    最后于 2019-3-16 01:57 被Cossack人人编辑 ,原因: 补充内容
    上传的附件:
    收藏
    免费 1
    支持
    分享
    最新回复 (0)
    游客
    登录 | 注册 方可回帖
    返回
    //