picoCTF 2018 wp《二》
接上一次的
@Time : 2018/10/7
hertz
nc连上,发现一堆英文字母,猜测是词频分析,丢入网站 https://quipqiup.com/
直接交就好,不用加picoCTF
hex editor
下载之后是一副图片,根据题目hex editor , 我们使用UltraEdit打开,可以在图片十六进制末尾发现
ssh-keyz
ssh的,我。。连反了,还好队友机智
先在shell里面生成ssh的公私匙
然后复制里面的 id_rsa.pub
放入自己的Ubuntu里 .ssh 文件夹下,连接就好了
Irish Name Repo
点击链接,进入admin login界面
用户名使用 admin' -- 便可绕过
Mr. Robots
标题是Mr.robots,于是想到是robots.txt
访问robots.txt,发现
访问得到
No Login
很迷啊,第一次访问flag,就可以得到flag,但是到了后面访问就不行了
Secret Agent
很明显,需要修改UserAgent,在网上找就行,但是注意,是找google的搜索引擎的useragent
Truly an Artist
老套路,十六进制编辑器打开,在末尾发现flag
be-quick-or-be-dead-1
blaise's cipher
hertz 2
还是一个词频分析题,似乎更简单
leak-me
now you don't
拿到图片之后,直接上神器 stegsolve
shellcode
what base is this?
给了三个题,一个二进制转字符,十六进制转字符,八进制转字符,当然,限时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.****.net/****_Pade/article/details/82958438
you can't see me
ls 没有任何显示,于是ls -al
发现这个命名十分特殊,是一个点,grep操作一波
Buttons
首先是这个页面,一个button
点击button,进入另外一个页面
继续点击页面,却会发现,不是button2的页面,而是跳转了
burp抓包看看,很正常
把上面的button1.php改成button2.php,得到flag
这是为什么呢?原来是因为请求方式的原因,当post button2.php的时候,会得到flag,get button2.php的时候,会跳转
Ext Super Magic
Lying Out
The Vault
看到有源码,点进去瞧一瞧
发现问题了
不知道是粗心还是故意的,这里就是有问题啊,check这里,过滤两次username干啥。。
那么,,直接万能密码咯,,
What's My Name
wireshark打开,直接搜索 字符串 name
查找一下他的流,发现有udp流,打开发现flag
absolutely relativ
先看source,
#include <stdio.h>
#include <string.h>
#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就可以了
caesar cipher 2
发现一段这个,题目说是凯撒密码,但是似乎普通的移位应该没有用的,应该是所有的字符都移位,于是
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)
got-2-learn-libc
rsa-madlibs
in out error
Artisinal Handcrafted
echooo
learn gdb
明显是要我们gdb调试
发现一个decrypt_flag 函数
先下个断点到decrypt_flag,然后 单步,之后似乎这个会加载到flag_buf,查看一下
Flaskcards
got-shell?
Malware Shops
fancy-alive-monitoring
store
这题,,flag都直接写在可执行文件里面了,直接搜索就好
不过我还是讲一下常规做法,
在这里,是一个商店,买东西的,一般来说,看到买东西啥的就该想到业务逻辑漏洞
一般就是通过改变购买的数量来导致自己的钱变多,你可以把数量变成负的,那么支出负的钱,也就是得到正的钱,在这里呢,也是差不多,虽然这里他限制不能输入负数,但是,可以输入一个很大的数,导致他变成负的
这样,我们的钱就变得特别多了,然后就可以去买flag了
Magic Padding Oracle
Secure Logon
script me
LoadSomeBits
Help Me Reset 2
A Simple Question
LambDash 3
由于还是太菜,只能写基础题,没法完全完成,之后能完善的再完善