ISCC2014--basic+web+misc

之前也没做过这一部分的题,但觉得这些题挺有意思的,比赛时间又长,就边学边做,也学到不少东西。

Basic

兵者诡道

进入关卡后

一番胡乱猜测后就没着了,大牛提示用GET,但是web小白没玩过抓包啊,学习一番,用WinsockExpert
得到了Key:Welcome-to-ISCC

知己知彼

只有两种字符,首先就猜测是摩尔密码,翻译为7个字符“mwggerw”,提交不对,试试移位密码,得到“isccans”,OK!

正则指令

又是完全不会的东西,不过上课无聊,就百度了一下,看了看教程,哈哈,就得到了一个网址www.[xyz]outu[bc][de].com/watch?v=5x1vNTjbwcs&list=PL3ZQ5CpNulQm1cXMJ5M6tX3O5vyXnCYFd

脑补了一下

www.youtube.com/watch?v=5x1vNTjbwcs&list=PL3ZQ5CpNulQm1cXMJ5M6tX3O5vyXnCYFd

直接打开还不行,还得翻墙

指令暗战

获得机器码可以通过vc或OD,但都需要删除‘\x66’,可能是调试状态下生成的多余机器码,在OD得到机器码更容易些。

知兵之将

用IDA秒破。

经之五事索其情

为了做这题,又把密码学和信息安全数学基础的课本翻出来复习了一番,n=2537,p=43,q=59

e=13,辗转相除法得到d=937,用win7自带的科学计算器计算得704

择人任势

这应该是一道逆向题,可是没有vbs逆向的经验,颇费了一番功夫。用记事本看文件为

dim swpu:swpu="fi dne★rre xobgsm★esle★fi
dne★ko xobgsm★neht 41=x fi★txen★fi
dne★rof tixe★rre xobgsm★esle★1+x=x★neht
)))i(bdwp+i(lbt(tnI=))i(adwp+))1,i-41,rts(dim(csa(tnI fi★31 ot 0=i rof★neht
)41=)rts(nel( fi★)"" ,""
,"码密入输请YEK看查"(xobtupni=rts★0=b:0=a:0=x★"!YEK是就码密的入输你"=ko★"!误错码密"=rre★)"|"
,"13|881|202|79|43|21|991|631|76|49|53|152|701|6|42|751"(tilps=bdwp★)"|"
,"54-|11-|721|83|73-|93-|88|64|22|811|25|441|54|49"(tilps=adwp★)"|","202|77|7|732|111|5|431|151|491|671|681|86|92|352|751|611|901|441|67|65|521|45|412|45|561|741|591|79|9|13|81|211|981|031|071|44|741|371|051|23|37|16|611|68|001|642|642|61|5|921|011|581|69|851|051|631|491|921|27|501|36|32|471|48|601|57|93|22|212|371|042|12|31|152|47|402|901|801|471|322|1|302|26|3|84|691|251|35|22|222|361|532|751|61|31|36|312|832|031|93|91|122|732|401|802|391|54|581|201|12|02|06|4|111|381|98|141|812|27|151|86|911|052|4|78|09|702|74|591|761|14|932|94|67|731|59|651|312|142|291|5|09|751|87|911|89|55|12|03|37|771|69|65|141|38|59|33|942|981|052|191|561|332|81|22|75|101|641|781|442|08|52|921|19|722|12|631|931|721|361|831|071|531|641|13|612|151|46|35|861|591|37|52|11|942|96|271|72|691|142|981|87|032|341|941|332|461|89|83|202|081|431|621|602|43|431|501|821|151|421|28|902|932|251|422|832|042|58|722|451|341|881|811|331|35|131|231|141|291|222|6|732|89|28|371|481|121|032|502|73|5|521|681|941|711|65"(tilps=lbt★x,i,rts,rre,dwp,lbt
mid":execute(replace(replace(strreverse(swpu), Chr(-23646), Chr(34)), "★", vbCrLf))

还都是反向的,将最后的“execute(replace(replace(strreverse(swpu), Chr(-23646), Chr(34)), "★",
vbCrLf)) ”改为“call SaveData(replace(replace(strreverse(swpu), Chr(-23646), Chr(34)), "★",
vbCrLf))

function SaveData(str)

Dim fso, f1

Set fso = CreateObject("Scripting.FileSystemObject")

Set f1 = fso.CreateTextFile("D:1.txt", True)

f1.write(str)

end function”

会将代码写入D盘的1.txt中,如下

dim tbl,pwd,err,str,i,x

tbl=split("56|117|149|186|125|5|37|205|230|121|184|173|82|98|237|6|222|192|141|132|131|53|133|118|188|143|154|227|85|240|238|224|152|239|209|82|124|151|128|105|134|34|206|126|134|180|202|38|98|164|233|149|143|230|78|189|241|196|27|172|69|249|11|25|73|195|168|53|64|151|216|31|146|135|170|138|163|127|139|136|21|227|91|129|25|80|244|187|146|101|57|22|18|233|165|191|250|189|249|33|95|83|141|56|96|177|73|30|21|55|98|119|78|157|90|5|192|241|213|156|95|137|76|49|239|41|167|195|47|207|90|87|4|250|119|68|151|72|218|141|89|183|111|4|60|20|21|102|185|45|193|208|104|237|221|19|39|130|238|213|63|13|16|157|235|163|222|22|53|152|196|48|3|62|203|1|223|174|108|109|204|74|251|13|21|240|173|212|22|39|75|106|84|174|23|63|105|72|129|194|136|150|158|96|185|110|129|5|16|246|246|100|86|116|61|73|32|150|173|147|44|170|130|189|112|18|31|9|97|195|147|165|54|214|54|125|56|76|144|109|116|157|253|29|68|186|176|194|151|134|5|111|237|7|77|202","|")

pwda=split("94|45|144|52|118|22|46|88|-39|-37|38|127|-11|-45", "|")

pwdb=split("157|24|6|107|251|35|94|67|136|199|12|34|97|202|188|31", "|")

err="密码错误!"

ok="你输入的密码就是KEY!"

x=0:a=0:b=0

str=inputbox("查看KEY请输入密码",
"", "")

if (len(str)=14) then

for i=0 to 13

if Int(asc(mid(str,14-i,1))+pwda(i))=Int(tbl(i+pwdb(i))) then

x=x+1

else

msgbox err

exit for

end if

next

if x=14 then

msgbox ok

end if

else

msgbox err

end if

用python将上边的代码写出来运行

#vbs.py

tbl="56|117|149|186|125|5|37|205|230|121|184|173|82|98|237|6|222|192|141|132|131|53|133|118|188|143|154|227|85|240|238|224|152|239|209|82|124|151|128|105|134|34|206|126|134|180|202|38|98|164|233|149|143|230|78|189|241|196|27|172|69|249|11|25|73|195|168|53|64|151|216|31|146|135|170|138|163|127|139|136|21|227|91|129|25|80|244|187|146|101|57|22|18|233|165|191|250|189|249|33|95|83|141|56|96|177|73|30|21|55|98|119|78|157|90|5|192|241|213|156|95|137|76|49|239|41|167|195|47|207|90|87|4|250|119|68|151|72|218|141|89|183|111|4|60|20|21|102|185|45|193|208|104|237|221|19|39|130|238|213|63|13|16|157|235|163|222|22|53|152|196|48|3|62|203|1|223|174|108|109|204|74|251|13|21|240|173|212|22|39|75|106|84|174|23|63|105|72|129|194|136|150|158|96|185|110|129|5|16|246|246|100|86|116|61|73|32|150|173|147|44|170|130|189|112|18|31|9|97|195|147|165|54|214|54|125|56|76|144|109|116|157|253|29|68|186|176|194|151|134|5|111|237|7|77|202"

tbl2=tbl.split(‘|‘)

pwda="94|45|144|52|118|22|46|88|-39|-37|38|127|-11|-45"

pwda2=pwda.split(‘|‘)

print(pwda[1])

pwdb="157|24|6|107|251|35|94|67|136|199|12|34|97|202|188|31"

pwdb2=pwdb.split(‘|‘)

for i in range(0 ,14):

x=int(tbl2[i+int(pwdb2[i])])

y=int(pwda2[i])

print(chr(x-y)

得到key : vB5_5cR1pT.Vb$

庙算多寡,胜负定矣

下载后发现,这又是一个逆向题,happy!

用IDA很快就分析清题意,将一txt文件里的内容按照某种规则变换,然后重新写入该文件中。

该变换规则如下:

0040136D 
|.  E8 9E060000   |call <jmp.&msvcrt.fgetc>                ; \fgetc

00401372 
|.  8845 EF       |mov byte ptr ss:[ebp-0x11],al

00401375 
|.  807D EF FF    |cmp byte ptr ss:[ebp-0x11],0xFF         ;  -1

00401379 
|.^ 74 D9         |je X加密程序.00401354

0040137B 
|.  807D EF 00    |cmp byte ptr ss:[ebp-0x11],0x0          ;  0

0040137F 
|.^ 74 D3         |je X加密程序.00401354

00401381 
|.  807D EF 2F    |cmp byte ptr ss:[ebp-0x11],0x2F

00401385 
|.  7E 0E         |jle X加密程序.00401395

00401387 
|.  807D EF 60    |cmp byte ptr ss:[ebp-0x11],0x60

0040138B 
|.  7F 08         |jg X加密程序.00401395

0040138D 
|.  8D45 EF       |lea eax,dword ptr ss:[ebp-0x11]

00401390 
|.  8000 35       |add byte ptr ds:[eax],0x35      ;  2f-0x60之间的加0x35

00401393 
|.  EB 6F         |jmp X加密程序.00401404

00401395 
|>  807D EF 2E    |cmp byte ptr ss:[ebp-0x11],0x2E

00401399 
|.  7F 35         |jg X加密程序.004013D0           
;  小写字母跳

0040139B 
|.  0FB64D EF     |movzx ecx,byte ptr ss:[ebp-0x11]

0040139F 
|.  66:0FBEC1     |movsx ax,cl

004013A3 
|.  6BC0 BB       |imul eax,eax,-0x45

004013A6 
|.  0FB7C0        |movzx eax,ax

004013A9 
|.  C1E8 08       |shr eax,0x8

004013AC 
|.  00C8          |add al,cl

004013AE 
|.  88C2          |mov dl,al

004013B0 
|.  C0FA 03       |sar dl,0x3

004013B3 
|.  88C8          |mov al,cl

004013B5 
|.  C0F8 07       |sar al,0x7

004013B8 
|.  28C2          |sub dl,al

004013BA 
|.  88D0          |mov al,dl

004013BC 
|.  C0E0 02       |shl al,0x2

004013BF 
|.  00D0          |add al,dl

004013C1 
|.  00C0          |add al,al

004013C3 
|.  00D0          |add al,dl

004013C5 
|.  88CA          |mov dl,cl

004013C7 
|.  28C2          |sub dl,al

004013C9 
|.  8D45 EF       |lea eax,dword ptr ss:[ebp-0x11]

004013CC 
|.  0010          |add byte ptr ds:[eax],dl

004013CE 
|.  EB 34         |jmp X加密程序.00401404

004013D0 
|>  0FB64D EF     |movzx ecx,byte ptr ss:[ebp-0x11]  ; 
对小写字符处理

004013D4 
|.  66:0FBEC1     |movsx ax,cl

004013D8 
|.  6BC0 87       |imul eax,eax,-0x79

004013DB 
|.  0FB7C0        |movzx eax,ax

004013DE 
|.  C1E8 08       |shr eax,0x8

004013E1  |.  00C8          |add al,cl

004013E3 
|.  88C2          |mov dl,al

004013E5 
|.  C0FA 05       |sar dl,0x5

004013E8 
|.  88C8          |mov al,cl

004013EA 
|.  C0F8 07       |sar al,0x7

004013ED 
|.  28C2          |sub dl,al

004013EF 
|.  88D0          |mov al,dl

004013F1 
|.  C0E0 04       |shl al,0x4

004013F4 
|.  28D0          |sub al,dl

004013F6 
|.  C0E0 02       |shl al,0x2

004013F9 
|.  00D0          |add al,dl

004013FB 
|.  88CA          |mov dl,cl

004013FD 
|.  28C2          |sub dl,al

004013FF 
|.  8D45 EF       |lea eax,dword ptr ss:[ebp-0x11]

00401402 
|.  2810          |sub byte ptr ds:[eax],dl

还是有一点麻烦的,于是我用python将ascii码都打印出来

#py

for i in range(1,127):

str = str+chr(i)

print(str)

!"#$%&‘()*+,-./0123456789:;<=>[email protected][\]

^_`abcdefghijklmnopqrstuvwxyz{|}~

对其进行加密,得

!#%‘)+-/135,.0 efghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂?

========================zzzzz

然后我将密文”+%=keky+%=jjnx”与原ascii字符串一一对应着找到了

“&#u606D&#u559C”,只是那个“=”对应多个字符,当我试到x时才正确

&#x606D&#x559C

Web

国君之争

虽然这是web100,但这明显是一道linux逆向题,哈哈。

程序一开始让输入序列号,然后拼接成http://www.ty-ing.org/script/1/cat.php?ty=序列号。。。

然后访问这个网址,输入错误返回“注册码错误”。

在IDA中发现了这个函数echo(),在整个程序中都没有调用。

密码由这个函数计算出,就在原程序的一处函数调用做了一下修改,将CALL的地址改为了echo()函数的地址,在Linux中运行如下图,得到flag.

霸业蓝图

进入关卡后如图

这是让上传个jpeg图片,靠高手给的思路,考察的是xss漏洞,于是用工具修改了图片作者

提交,ok!

MISC

广纳谏言

此题为gif修复,百度一下gif文件格式,然后对该图片进行修复

在文件结尾去除“~~~What a pity,the flag is not here”删除,然后把开头的gif标志补全,即”GIF89a”,然后得打完整的gif图片。

Y2F0Y2hfdGhlX2R5bmFtaWNfZmxhZ19pc19xdWl0ZV9zaW1wbGU=

Base64解码后为”catch_the_dynamic_flag_is_quite_simple”。

穆公亡马

大牛给的思路,就看icmp包,就那几个包,果然很快。

秦国未来

下载文件后发现这个elf文件只能在手机上跑,用IDA分析了下主要算法

LDR     R3, [R11,#var_8]

.text:00008284                 MOV     R2, R3,LSL#2

.text:00008288                 LDR     R3, [R11,#var_18]

.text:0000828C                 ADD     R3, R2, R3

.text:00008290                 LDR     R1, [R11,#var_8]

.text:00008294                 LDR     R2, [R11,#var_10]

.text:00008298                 ADD     R2, R1, R2

.text:0000829C                 LDRB    R2, [R2]

.text:000082A0                 MOV     R1, R2

.text:000082A4                 LDR     R2, [R11,#var_8]

.text:000082A8                 SUB     R0, R2, #1

.text:000082AC                 LDR     R2, [R11,#var_10]

.text:000082B0                 ADD     R2, R0, R2

.text:000082B4                 LDRB    R2, [R2]

.text:000082B8                 ADD     R2, R1, R2

.text:000082BC                 STR     R2, [R3]

.text:000082C0                 LDR     R3, [R11,#var_8]

.text:000082C4                 ADD     R3, R3, #1

.text:000082C8                 STR     R3, [R11,#var_8]

.text:000082CC

.text:000082CC loc_82CC                                ; CODE XREF: sub_821C+60j

.text:000082CC                 LDR     R2, [R11,#var_8]

.text:000082D0                 LDR     R3, [R11,#var_14]

.text:000082D4                 CMP     R2, R3

.text:000082D8                 BLT     loc_8280

.text:000082DC                 MOV     R3, #1

.text:000082E0

.text:000082E0 loc_82E0                                ; CODE XREF: sub_821C+30j

.text:000082E0                 MOV     R0, R3

.text:000082E4                 MOV     SP, R11

.text:000082E8                 LDR     R11, [SP+0x1C+var_1C],#4

.text:000082EC                 BX      LR

有通过几次输入明文与密文的比对发现,密文第一个字符明文第一个字符的ascii码,密文第二字符是明文前两字符ascii码之和,密文第三字符是明文第二、第三字符之和……..以此类推。

于是得到:Flag{Flag_for_ISCC2014}

Flag_for_ISCC2014就是最终的Flag。

ISCC2014--basic+web+misc,布布扣,bubuko.com

时间: 2024-08-28 12:34:28

ISCC2014--basic+web+misc的相关文章

[V&amp;N2020 公开赛] Web misc部分题解

0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮箱填上buu内网的邮箱以admin账户登陆.然后修改密码,给我们注册的邮箱发送邮件,去内网邮箱处登陆,点击链接修改密码.这样平台真正的admin账户就被修改了. 我们以用户名admin,密码为我们刚刚修改的登陆.找到flag. CHECKIN perl 脚本反弹shell: 链接: https://

Java Web services: WS-Security with Metro--referenc

As you know from "Introducing Metro," the reference implementations of the JAXB 2.x data-binding and JAX-WS 2.x Web services standards are at the core of the Metro Web services framework. But in and of themselves, JAXB and JAX-WS provide only ba

yii2 basic 简洁安装教程

虽然yii官网上说叫咱们用composer安装来安装,但是鄙人感觉这样的安装方式会将自己写的代码共享到github中,因此不太建议大家这样用.下面来给大家介绍basic简洁的安装方法. 第一步,下载basic,没下载的网友们可以到这下载 http://www.yiichina.com/download 第二步,解压打web访问目录.本人用的是xampp,因此就放在了htdocs里面,上图 第三步,在页面中直接访问localhost/basic(不同的apache访问不同,这是xampp下的比较方

spring结合时,web.xml的配置

<!-- 1. web.xml配置 <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.root</param-value> </context-param> "webapp.root"这个字符串可以随便写任何字符串.如果不配置默认值是"webapp.root". 可以用System.getP

web后台知识点整理

五.JEE 适用于创建服务器端的大型的软件服务系统 1. JEE : JAVA  PLATFORM  ENTERPRISE  DEDITON 2.是一个规范集.技术集.框架集(API集) 一种技术对应一种或多种规范 框架是能够完成一定功能的半成品 1.优点:完成一定的功能.提供一个经良的应用程序架构 2.框架都是以接口的形式出现  3. 应该了解框架完成的功能.框架的API接口.框架的功能是怎么实现的 3.C/S B/S 模式 a.   C/S client/server 客户端也参与程序的运行

RESTful Web API Help Documentation using Swagger UI and Swashbuckle

Sign in home articles Chapters and Sections> Search Latest Articles Latest Tips/Tricks Top Articles Beginner Articles Technical Blogs Posting/Update Guidelines Article Help Forum Article Competition  Submit an article or tip  Post your Blog quick ans

yii2 basic版基础部分

Yii2.0 basic 版 yii 官方网站:http://www.yiiframework.com/ 一.安装: 1.下载地址:http://www.yiichina.com/download 从归档文件安装:Yii2的基本应用程序模板 2.参数修改:basic/config/web.php 将 cookieValidationKey 任意填写一个值 3.访问主页:http://localhost/basic/web/index.php 二.目录结构 1.controllers/  :  控

java 通过System.getProperties()获取系统参数

1.java的System.getProperty()方法可以获取的值 java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.specification.name

yum的更多用法和源码编译安装apache

一.yum的更多用法 上篇文章介绍了yum的基础用法及yum源的基本配置,除此之外yum还有更多的用法,以下将继续介绍yum的使用方法. 1.yum-config-manager工具,该工具可以自动生成yum的repo文件,而不需要手动创建编写,使用方法如下: 用法:yum-config-manager [options] [section] -add-repo:添加仓库 # 添加一个阿里云的yum仓库 yum-config-manager -add-repo=http://mirrors.al