1.加密再解密_qsj
题目描述:
很简单的一道题目,就如同你看到的那样——解密再解密,通过ssh连接靶机,账号test,密码123
SSH 登陆
ls -al看看,发现flag就在根目录
cat 读取enflag.txt的内容:LS4uLi4gLS0tLi4gLS0uLi4gLi4tLS0gLi4tLS0gLi4uLS0gLi4uLi0gLS0tLS4g
观察这个密文,很容易发现都是LS或者Li开头的,可以考虑Base64的编码方式。可以看看下面这篇文章:CTF密码学常见加密解密总结_shamir ctf_孳竹的博客-CSDN博客
随便找个BASE64的网址:Base64编码转换工具,Base64加密解密 (qqxiuzi.cn)
解密的结果几短一长,很容易想到摩斯电码。
下面网站进去解密试试:摩尔斯电码转换器:在线进行摩尔斯电码和英文字母的相互转换,可以把莫尔斯电码转换为英文字母,也可把英文字母转换为摩尔斯电码 (zhongguosou.com)
顺利得到flag
2。GDB调试_qsj(100分)
题目描述:
通过ssh远程连接靶机,账号test,密码123,尝试使用GDB调试进行变量的赋值,Just run it!
做了一个多小时没写出来,我最开始的思路是反汇编printf函数,找到num=0的时候要显示的值的地址,但没有得到最后答案,简单写一下吧。
之前没有接触过反汇编,让chatGPT帮我们看看反编译结果:
之后我利用下面指令得到一个八位数,本来很高兴的以为是flag,可惜答案错误,懒得再研究了
x/d 0x7ffff7a46fcb
最后抄的这位同学,非常感谢大佬的思路:GDB调试题_idgaf//的博客-CSDN博客
3.
题目描述:
"浏览器访问靶机,利用urldecode
知识点提示:
①int eregi(string pattern, string string, [array regs]);
eregi()函数在一个字符串搜索指定的模式的字符串,搜索不区分大小写。eregi()可以检查有效性字符串,如密码。如果匹配成功返回true,否则返回false。
eregi()函数漏洞:字符串对比解析,当ereg读取字符串string时%00后面的字符串不会被解析。
②urldecode()可构成二次编码漏洞"
题目写的还蛮清楚的,代码审计。我对代码审计不太熟悉,一般是丢给chatGPT看他怎么说
如果题目不给出这些提示条件的话,AI可以为我们提供一些思路。 不过请不要指望它帮你解CTF,大部分时候他都是在胡说八道,在我看来他只能做有答案的题,完全不会创新。
思路参考:代码审计_urldecode二次编码绕过 - gzu_zb - 博客园 (cnblogs.com)
有个小小的注意事项,可以改变多个字符的编码方式,我同时改变了DJ的编码方式,输入浏览器成功得到flag