NNCTF-2018(部分)
Last updated on 2 months ago
WEB:
超简单的web题
直接截断拿到flag
http://gxnnctf.gxsosec.cn:12311/?no=1%00-
Sqli???
看看这边/.git/
返回403 感觉存在git漏洞
随后用python恢复一下git文件恢复。
可以看到验证了git文件泄露的存在, 跑出来一个index.php
对index.php
代码审计
if($username === 'guest'){ if($username === 'admin'){
条件是两个查询 一个是guest
一个是admin
可见可能是利用条件语句来查询数据库。
if(preg_match('#sleep|benchmark|floor|rand|count|select|from|\(|\)|time|date|sec|day#is',$ip)){
以上也可见过滤了括号等等。
Sql绕过
看源码感觉是第一次查询为guest
第二次查询为admin
那我们是不是可以使用mysql
的变量绕过这个,第一次查询变量值为1
,第二次变量查询值为2
,可以想到使用case when @x is null then @x:=2 ELSE @x:=1
。
执行同样的语句,第一次为guest
第二次变量赋值为x=1
1 |
|
白帽子商城
分析:注册新账号,初始金额1000刀,要购买帽子,一级帽子500刀,购买成功则提升一级,帽子的价格也随之上调1$.购买第一个帽子后,就发现余额不足以继续购买了.
重新注册个新账号,尝试条件竞争,打开burp,点击购买,抓取数据
发送到Intruder,点击Positions,点击clea,点击Payload,选择类型为Null,调大线程和发送次数
发现竞争失败。
后面测试,发现修改【order】的参数可以免费购买帽子,但是始终绕不过购买第二个帽子
于是,猜想这里应该存在条件竞争,那再新注册个账号,修改数据先达到购买第二个帽子的页面,这里使用脚本来登录两个会话同时进行购买帽子
使用脚本同时购买第二个帽子
刷新浏览器,已经get到flag
MISC:
这是啥
尝试了栅栏密码和凯撒密码,发现有点像凯撒密码
GFE-YLCERCNSNLA-AIX{N-PYNET-TSTMYRA}
把上面这一串分为6组6个字符串
1 |
|
每组按照143526
的顺序排序,最后拿到flag
1 |
|
MISC2
分析:
解压下载的压缩包,发现里面有40个flag.zip
包,并且每个压缩包文件都有3个字节大小的名为flag.txt
的文件。那就尝试crc32
碰撞看看能不能还原压缩包里面的内容。
从网上搜索一波,看看有没有相似的,于是找到一遍文章https://www.cnblogs.com/WangAoBo/p/6951160.html
,直接拿现成脚本代码来跑。
这里坑啊,跑了半天什么都没跑出来。后来仔细审了下该脚本,脚本里的CrackCrc()有4个for循环
,对应的应该是压缩包里的大小为4
个字节的文件,但是现有的压缩包大小是3
个字节,于是修改下代码去掉一个for循环, 最终脚本,如下:
What,这是什么啊,新手的我一脸懵逼。后面baidu、Google了一波,原来这个是ASCII码,把ASCII转换成对应的字符串,然后再base64解码即可。
太简单了
解压压缩包,里面这有个没有尾缀名的flag
文件,老规矩,file
一下看看是什么文件,是个zip
压缩包,直接加上为尾缀名,解压
解压不了,提示文件损坏。直接扔winhex,发现文件头被改了,直接改回来
Txt:
下载下来是一个txt文件,但是复制的时候好像有点问题
打开winhex下查看,发现隐藏了一些东西。
谷歌zero-width,找到原题:
https://rawsec.ml/en/HackIT-2018-write-ups/
在wirteup部分找到解密的链接,复制文本里的内容直接解密得到flag
https://offdev.net/demos/zwsp-steg-js
Pwn
format
格式化字符串盲打 通过printf的函数地址确定libc基址,从而获得system地址。
send字符串“/bin/sh;”,那么在调用printf(“/bin/sh;”)的时候实际上调用的是system(“/bin/sh;”),
通过格式化字符串漏洞达到任意读和任意写功能通过使其泄露信息从而实现目的。
MOBILE
IOS_200
题目描述:IOS送分题
压缩包下载下来解压,先file一下看看,发现里面的【UnlockMyIphone】是64位的app文件。
直接扔进IDA,搜索一波flag,key之类的关键字,搜到一串私钥,仔细看,发现这是不需要密钥就可以解密的。
私钥后面跟着两串类似加密的字符串,不管那多,把私钥和这两串文本复制出来先。
百度 在线rsa加密解密,找到以下站点进行解密(这里好像有个小坑,百度出来的前三个站点解不了,不知什么情况)
BASIC:
Her Majesty Queen Elizabeth II:
1 |
|
直接base92解码拿到flag
真—签到题:
关注公众号拿flag
Crypto:
维吉尼亚遇上困难:
这一段应该是维吉尼亚密码
1 |
|
直接搜索找到解密网址
https://guballa.de/vigenere-solver
Shamir重要数据损坏
某集团总裁Shamir将自己使用的笔记本电脑上重要的秘密数据分割成5份子秘密数据,并分别存放在5个存储设备上,其中可以由至少3份子秘密数据联合参与运算,才能重构原来的秘密数据。分割方案使用的参数模数为5987。由于Shamir使用的笔记本电脑感染病毒致使该重要秘密数据损坏无法修复,于是Shamir让技术人员通过存放在编号为5、7、9的三个存储设备的子秘密数据进行重构重要秘密数据,其中编号5的存储设备存放的数据为(5,2258)、编号为7的存储设备存放的数据为(7,2424)、编号为9的存储设备存放的数据为(9,2630)。请问技术人员重构出来的重要秘密数据是多少?
1 |
|
由矩形对应
1 |
|
由矩阵A得
1 |
|
计算出矩阵A的伴随矩阵
1 |
|
所以伴随矩阵得:
1 |
|
ChaGPT的回答
这是一个使用 Shamir’s Secret Sharing Scheme 进行秘密数据重构的问题。Shamir’s Secret Sharing Scheme 是一种秘密共享方法,它通过将秘密拆分为多个部分,然后至少需要其中一部分来重构原始秘密。
在这个问题中,三个存储设备的数据为(5,2258)、(7,2424)、(9,2630)。每个数据包含两个值,一个是存储设备的编号,另一个是对应的子秘密数据。
Shamir’s Secret Sharing Scheme 的公式如下:
其中, 是参数模数(在这个问题中为5987), 是阈值,$a_0, a_1, \ldots, a_t $ 是秘密数据的系数。
在这个问题中,,因为需要至少三个设备来重构原始秘密数据。我们有三个点 、 和。
现在,我们可以使用拉格朗日插值法来找到 ,即 时的函数值,这个值就是原始秘密数据。拉格朗日插值法的公式如下:
其中, 是每个点的坐标。在这个问题中,我们有:
将这些值代入插值公式中,得到原始秘密数据:
计算这个表达式,即可得到重构出来的重要秘密数据。请注意,在模运算中,需要确保计算的结果始终保持在模数 的范围内。