Category - TCTF2019

Neuron_Break.zip
神经网络欺骗
第0~3张很容易加两三个点就行,第4张加点已经搞不定了,找到了一个脚本加载了题目提供的模型,改了改参数跑出来了,剩下三张搞不下去了。。

给一个wp:
https://github.com/wonrzrzeczny/CTF-writeups/tree/master/0ctf%202019/Neuron%20Break

解法是先定一个变形的目标,随机改一个像素值的RGB的其中一个,目的是使图片与变形目标的相似度越来越高,相似度比之前高就保留修改,直到相似度大于0.5

安装了Imagick,但是这个版本不存在RCE。
backdoor=echo base64_encode(file_get_contents('index.php'));读出index.php

  1. <?php
  2. $dir = "/tmp/" . md5("$_SERVER[REMOTE_ADDR]");
  3. mkdir($dir);
  4. ini_set('open_basedir', '/var/www/html:' . $dir);
  5. ?>
  6. <!DOCTYPE html><html><head><style>.pre {word-break: break-all;max-width: 500px;white-space: pre-wrap;}</style></head><body>
  7. <pre class="pre"><code>Imagick is a awesome library for hackers to break `disable_functions`.
  8. So I installed php-imagick in the server, opened a `backdoor` for you.
  9. Let's try to execute `/readflag` to get the flag.
  10. Open basedir: <?php echo ini_get('open_basedir');?>
  11. <?php eval($_POST["backdoor"]);?>
  12. Hint: eval($_POST["backdoor"]);
  13. </code></pre></body>

题目能写的目录在$dir="/tmp/'.md5($_SERVER['REMOTE_ADDR']);

当时找到了一篇文章:
https://www.freebuf.com/articles/web/192052.html
可以通过设置LD_PRELOAD环境变量加载动态库文件绕过disable_functions
但还需要一个能启动新进程的函数,文章中用来mail,但是disable_functions里禁止了,然后我就疯狂找新的函数,但还是找不着...(其实这是另一个解法,用函数error

题目是多项式版本的RSA,定义了在多项式环上的大整数操作。只要可以分解多项式,就可以找出解密因子。用sage可以很简单地分解给定的多项式N,设得到的两个多项式的次数是p、q,根据论文Polynomial based RSA,解密因子可以定义为:d=e1mods,其中

s=(2p1)(2q1)

  1. from os import urandom
  2. P = PolynomialRing(GF(2), 'x')
  3. e = 31337
  4. n = P('x^2048 + x^2046 + x^2043 + x^2040 + x^2036 + x^2035 + x^2034 + x^2033 + x^2031 + x^2029 + x^2025 + x^2024 + x^2022 + x^2019 + x^2018 + x^2017 + x^2012 + x^2007 + x^2006 + x^2004 + x^2000 + x^1999 + x^1998 + x^1997 + x^1993 + x^1992 + x^1991 + x^1986 + x^1982 + x^1981 + x^1979 + x^1978 + x^1977 + x^1975 + x^1970 + x^1964 + x^1963 + x^1962 + x^1961 + x^1960 + x^1959 + x^1958 + x^1955 + x^1954 + x^1952 + x^1951 + x^1949 + x^1947 + x^1942 + x^1939 + x^1938 + x^1936 + x^1934 + x^1933 + x^1932 + x^1930 + x^1928 + x^1927 + x^1923 + x^1922 + x^1919 + x^1918 + x^1915 + x^1914 + x
流程比较简单的一道题,main函数一路到底。 首先,第一段将flag中大写全部转为小写 ``` v4 = __ctype_tolower_loc(); v5 = &s[1]; do { *(v5 - 1) = (*v4)[v3]; v3 = *v5++; } while ( v3 ); ```
然后输入字符串为'flag{'开头
这题是一道线程相关的题目,漏洞类型是UAF,或者表述为TOCTOU(Time-of-Check Time-of-Use). 选单系统提供三个选项,分别使添加任务(add),删除任务(delete),和执行任务(go)。 问题出在执行任务的时候: 程序会新建一个线程执行run函数,run函数的操作如下: ![run](https://leanote.com/api/file/getImage?fi