接上一次的
@Time : 2018/10/7
nc连上,发现一堆英文字母,猜测是词频分析,丢入网站 https://quipqiup.com/
直接交就好,不用加picoCTF
下载之后是一副图片,根据题目hex editor , 我们使用UltraEdit打开,可以在图片十六进制末尾发现
ssh的,我。。连反了,还好队友机智
先在shell里面生成ssh的公私匙
然后复制里面的 id_rsa.pub
放入自己的Ubuntu里 .ssh 文件夹下,连接就好了
点击链接,进入admin login界面
用户名使用 admin' -- 便可绕过
标题是Mr.robots,于是想到是robots.txt
访问robots.txt,发现
访问得到
很迷啊,第一次访问flag,就可以得到flag,但是到了后面访问就不行了
很明显,需要修改UserAgent,在网上找就行,但是注意,是找google的搜索引擎的useragent
老套路,十六进制编辑器打开,在末尾发现flag
还是一个词频分析题,似乎更简单
拿到图片之后,直接上神器 stegsolve
给了三个题,一个二进制转字符,十六进制转字符,八进制转字符,当然,限时30秒
口算二进制吗
当然是写脚本,然后一个一个复制粘贴
a = input("please input: ")
b = a.split(" ")
c = ''
for i in b:
c += chr(int(i,2))
print(c)
a = input("please input: ")
c = ''
for i in range(0,len(a),2):
c += chr(int(a[i:i+2],16))
print(c)
a = input("please input: ")
b = a.split(" ")
c = ''
for i in b:
c += chr(int(i,8))
print(c)
当然,,我还是给个自动化脚本吧,顺带学习了一波pwntools,在下面的博客里面写的
https://blog.csdn.net/csdn_Pade/article/details/82958438
ls 没有任何显示,于是ls -al
发现这个命名十分特殊,是一个点,grep操作一波
首先是这个页面,一个button
点击button,进入另外一个页面
继续点击页面,却会发现,不是button2的页面,而是跳转了
burp抓包看看,很正常
把上面的button1.php改成button2.php,得到flag
这是为什么呢?原来是因为请求方式的原因,当post button2.php的时候,会得到flag,get button2.php的时候,会跳转
看到有源码,点进去瞧一瞧
发现问题了
不知道是粗心还是故意的,这里就是有问题啊,check这里,过滤两次username干啥。。
那么,,直接万能密码咯,,
wireshark打开,直接搜索 字符串 name
查找一下他的流,发现有udp流,打开发现flag
先看source,
#include
#include
#define yes_len 3
const char *yes = "yes";
int main()
{
char flag[99];
char permission[10];
int i;
FILE * file;
file = fopen("/problems/absolutely-relative_2_69862edfe341b57b6ed2c62c7107daee/flag.txt" , "r");
if (file) {
while (fscanf(file, "%s", flag)!=EOF)
fclose(file);
}
file = fopen( "./permission.txt" , "r");
if (file) {
for (i = 0; i < 5; i++){
fscanf(file, "%s", permission);
}
permission[5] = '\0';
fclose(file);
}
if (!strncmp(permission, yes, yes_len)) {
printf("You have the write permissions.\n%s\n", flag);
} else {
printf("You do not have sufficient permissions to view the flag.\n");
}
return 0;
}
意思差不多能看懂,就是从permission.txt里面取出来字符串,和”yes“比较,成功就得到flag,
再进入他的shell里面,发现那个目录并没有permission文件,
也无法在这里建立文件,但是,可以在自己的家目录建立啊
于是
echo "yesab" >> permission.txt
然后在家目录建立一个链接,把题目的那个目录下的可执行文件链接到家目录
ln -s /problems/absolutely-relative_2_69862edfe341b57b6ed2c62c7107daee/absolutely-relative a.out
然后执行这个a.out就可以了
发现一段这个,题目说是凯撒密码,但是似乎普通的移位应该没有用的,应该是所有的字符都移位,于是
cipher = r"PICO#4&[C!ESA2?#I0H%R3?JU34?A2%N4?S%C5R%]"
shift = ord("{") - ord("[")
plain = ''
for i in cipher:
plain += chr(shift + ord(i))
print(plain)
明显是要我们gdb调试
发现一个decrypt_flag 函数
先下个断点到decrypt_flag,然后 单步,之后似乎这个会加载到flag_buf,查看一下
这题,,flag都直接写在可执行文件里面了,直接搜索就好
不过我还是讲一下常规做法,
在这里,是一个商店,买东西的,一般来说,看到买东西啥的就该想到业务逻辑漏洞
一般就是通过改变购买的数量来导致自己的钱变多,你可以把数量变成负的,那么支出负的钱,也就是得到正的钱,在这里呢,也是差不多,虽然这里他限制不能输入负数,但是,可以输入一个很大的数,导致他变成负的
这样,我们的钱就变得特别多了,然后就可以去买flag了
由于还是太菜,只能写基础题,没法完全完成,之后能完善的再完善