签到 直接base64转图片即可 网址:http://www.vgot.net/test/image2base64.php 或脚本:
1 2 3 4 5 from base64 import b64decodea=open ("1.txt" ,"r" ).read() c=open ("1.png" ,"wb" ) c.write(b64decode(a)) c.close()
WEB:CheckIn 国赛华东北赛区的类似题orz
0x01 上传测试 经过上传发现共有3种回显结果 1、<? in contents! 表示 <?不能连续出现在文件中 2、illegal suffix! 表示 不能上传后缀为php、php4、php5、phtml等可直接被解析的PHP文 件 3、exif_imagetype:not image! 表示 判断一个图片的类型(即读取一个图像的第一个字节并 检查其签名)
exif_imagetype (PHP 4 >= 4.3.0,PHP5,PHP 7) exif_imagetype - 判断一个图像的类型
0x02 突破口 尝试了.htaccess
,发现不行。 找到一篇文章:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%9 0%E7%9A%84PHP%E5%90%8E%E9%97%A8.html?tdsourcetag=s_pctim_aiomsg
总结起来就是: 先上传一个.user.ini文件 再上传一个图片文件(图片中是木马) 解释:.user.ini可以会将图片马中的代码包含到每个php文件中
开始上传 使用GIF89a
绕过exif_imagetype
判断 使用<script>
标签绕过对<?
的检测 最终文件内容分如下:SUCTF2019 上传.user.ini
SUCTF2019 上传111.jpg
SUCTF2019 根据路径访问index.php并传入cmd的值:?cmd=system("cat /flag");
即可得到flag 这里传的是get型的马,直接传参读取即可,传post型需使用菜刀连接数据库找flag.SUCTF2019
WEB:EasyPHP https://xz.aliyun.com/t/6042#toc-26
easy_sql 此题存在非预期解
.index.php.swp
存在源码泄露,源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 <?php session_start (); include_once "config.php" ; $post = array (); $get = array (); global $MysqlLink ; $MysqlLink = mysqli_connect ("localhost" ,$datauser ,$datapass ); if (!$MysqlLink ){ die ("Mysql Connect Error!" ); } $selectDB = mysqli_select_db ($MysqlLink ,$dataName ); if (!$selectDB ){ die ("Choose Database Error!" ); } foreach ($_POST as $k =>$v ){ if (!empty ($v )&&is_string ($v )){ $post [$k ] = trim (addslashes ($v )); } } foreach ($_GET as $k =>$v ){ } } ?> <html> <head> </head> <body> <a> Give me your flag, I will tell you if the flag is right. </ a> <form action="" method="post" > <input type="text" name="query" > <input type="submit" > </form> </body> </html> <?php if (isset ($post ['query' ])){ $BlackList = "prepare|flag|unhex|xml|drop|create|insert|like|regexp|outfile|readfile|where|from|union|update|delete|if|sleep|extractvalue|updatexml|or|and|&|\"" ; if (preg_match ("/{$BlackList} /is" ,$post ['query' ])){ die ("Nonono." ); } if (strlen ($post ['query' ])>40 ){ die ("Too long." ); } $sql = "select " .$post ['query' ]."||flag from Flag" ; mysqli_multi_query ($MysqlLink ,$sql ); do { if ($res = mysqli_store_result ($MysqlLink )){ while ($row = mysqli_fetch_row ($res )){ print_r ($row ); } } }while (@mysqli_next_result ($MysqlLink )); } ?>
非预期解:
RE:SignIn 分析一下逻辑,发现是RSA… gmp库计算RSA 直接在factordb分解N 脚本:
1 2 3 4 5 6 7 8 9 10 from Crypto.Util.number import inversep = 282164587459512124844245113950593348271 q = 366669102002966856876605669837014229419 n = p*q phi = (p-1 )*(q-1 ) e = 65537 d = inverse(e,phi) c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35 m = pow (c,d,n) print (hex (m)[2 :-1 ].decode("hex" ))
Misc:game 打开题目是魔方 四处找敏感信息orz index.html里有一句话:can u find my secret? 在两个js文件里搜,找到一个图片文件名:iZwz9i9xnerwj6o7h40eauZ.png 下下来,用Stegsolver看一下LSB,发现有一串字符:U2FsdGVkX1+zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ==
根据U2FsdGVkX1猜测是密文,试了一下,3DES,密钥是index.html中的字符串ON2WG5DGPNUECSDBNBQV6RTBNMZV6RRRMFTX2===
的b32decode,解开可得flag
贴一下wp,方便学习orz:
官方WP:https://www.xctf.org.cn/library/details/17e9b70557d94b168c3e5d1e7d4ce78f475de26d/
De1ta师傅们的wp:https://xz.aliyun.com/t/6042#toc-3