Pico CTF General Skills

# 0x01 Obedient Cat #
### picoCTF{s4n1ty_v3r1f13d_28e8376d} ###
> 这个文件有一个明显的标志(又名“in-the-clear”)。

> 提示:要在您的 shell 中访问该文件,请在终端提示符中输入以下内容:`$wget https://mercury.picoctf.net/static/fb851c1858cc762bd4eed569013d7f00/flag`

这题没什么难度,不要把事情想的太过复杂,需要用到cat命令,直接在shell里面 cat flag。就能得到flag,然后开心的提交

# 0x02 Python Wrangling #
### picoCTF{4p0110_1n_7h3_h0us3_dbd1bea4} ###
>Python 脚本的调用类似于终端中的程序…您可以使用**此密码**运行此 **Python 脚本**来获取**标志**吗?

>通过在终端提示符中输入以下命令,获取可在 shell 中访问的 Python 脚本:`$ wget https://mercury.picoctf.net/static/1b247b1631eb377d9392bfa4871b2eb1/ende.py`

这题还是自己把题目想的太复杂了,折腾了很久,然后发现flag是直接下载的,虽然是加密的flag,但是刚好python的脚本就是有解密的,但是python脚本里是有个加密参数的,完全没用上,不过最后还是拿到了flag;下载python脚本和密码,还有flag。

把flag写到一个txt里面

> `echo gAAAAABgUAIWuksW6PU7W1WFXiBWkF2S8VhtL_5335iazHhuBnWloiyt3ZAFwR2zyuG7iZLSVPaQIZLTxgo-WXIk6Cnk7-KZm1g1qo_v1zDMK5wDocmVFxL0o5ae6OrB9VKdh3HerIsy >flag.txt`

>`python ende.py -d flag.txt`

>输入**密码**:`dbd1bea4dbd1bea4dbd1bea4dbd1bea4`

然后就自动解密得到flag了

# 0x03 Wave a flag #
### picoCTF{b1scu1ts_4nd_gr4vy_18788aaa} ###
> 您可以为工具或二进制文件调用帮助标志吗?这个程序有非常有用的信息…

>要在您的 shell 中访问该文件,请在终端提示符中输入以下内容:`$ wget https://mercury.picoctf.net/static/a00f554b16385d9970dae424f66ee1ab/warm`

得到文件后是可以直接在Linux运行的,不过得先给他加个**权限chmod +x warm** 然后乜,用**./warm**来运行,然后他就会给我个提示说使用一个 **参数** **-h** 来获取帮助,等我把-h加上去之后,他就直接给我flag了,真的太友好了!

# 0x04 what’s a net cat? #
### picoCTF{nEtCat_Mast3ry_d0c64587} ###
>使用 netcat (nc) 将非常重要。您可以连接到`jupiter.challenges.picoctf.org端口25103`以获取标志吗?

本来我做的是 “不错的网猫” 这道题,但是我了解到首先要知道什么是网猫(netcat)
>渗透测试人员通常使用端口扫描技术来收集信息。 Nmap是找到开放端口的最受欢迎的工具之一。 Netcat可以提供端口扫描功能。 netcat的优点是简单并且没有库依赖性。 单个netcat二进制文件足以进行端口扫描,并且可用于所有操作系统,例如Windows,Linux,Unix,MacOS,BSD。

>题目只是说连接他来获取flag,所以我直接 

>`nc jupiter.challenges.picoctf.org 25103`

成功获取到flag

# 0x05 Nice netcat #
### picoCTF{g00d_k1tty!_n1c3_k1tty!_d3dfd6df} ###
不错,现在才是“不错的网猫”
>有一个不错的程序,您可以通过在 shell 中使用以下命令与之交谈:`$ nc mercury.picoctf.net 22902`,但它不会说英语……

>看提示呢就很明显了,是要用ASCII交谈,直接到Linux连接,然后显示出一堆数字。

猜测是十进制转成ASCII,找个在线工具一转就是flag了。<br>
转换,提交。

# 0x06 Static ain’t always noise #
### picoCTF{d15a5m_t34s3r_ccb2b43e} ###
>你能看看这个二进制文件中的数据:[静态](https://mercury.picoctf.net/static/ff4e569d6b49b92d090796d4631a2577/static)吗?这个[BASH](https://mercury.picoctf.net/static/ff4e569d6b49b92d090796d4631a2577/ltdis.sh) 脚本可能会有所帮助!

讲道理,这个一点提示都没有,虽然用了两分钟就找出来flag,但还是有点懵。<br>
下载了两个文件,一个静态文件,一个bash脚本。<br>我先看了bash脚本,直接在windows下运行,无事发生。我又单独在Linux系统下给静态文件赋予权限并且运行他。<br>他提示`Oh hai! Wait what? A flag? Yes, it’s around here somewhere!`
这我能忍吗?然后我选择用记事本打开bash脚本。<br>
发现了一段
`Usage:ltdis.sh <program-file>`<br>
所以我决定 `ltdis.sh static`<br>
之后生成了两个文件,查看其中一个,空白,再看另外一个,flag就在其中。

# 0x07 Tab, Tab, Attack #
### picoCTF{l3v3l_up!_t4k3_4_r35t!_d32e018c} ###
>在终端中使用 tabcomplete 会延长你的寿命,尤其是。处理冗长的目录结构和文件名时:[Addadshashanammu.zip](https://mercury.picoctf.net/static/3afd18a65e42b80526aa87f9766c588b/Addadshashanammu.zip)

来理解一下tabcomplete,在Linux里面文件名很长很臭,我都是输入几个然后按Tab让他自动补全,这个题目简单,就是一直进目录,套娃。最终出现一个不是目录,直接赋予权限并运行,获取flag。

# 0x08 Magikarp Ground Mission #
### picoCTF{xxsh_0ut_0f_\/\/4t3r_21cac893} ###
>你知道如何在目录之间移动和在 shell 中读取文件吗?启动容器,`ssh` 到它,然后`ls` 一旦连接就开始了。通过`ssh`作为`ctf-player`使用密码`abcba9f7`登录

根据提示启动容器后,会给你一个链接的端点 `ssh ctf-player@venus.picoctf.net -p 56265`<br>
我在Linux下连接他,使用命令`ls`,发现目录下有两个文件,我从第一个文件中cat到了前段flag `picoCTF{xxsh_`<br>下一段在第二个文件,cat第二个文件提示我去`/`目录<br>发现有除了目录外的两个txt文件,cat其中一个txt拿到第二段flag `0ut_0f_\/\/4t3r_`<br>再cat第二个文件txt文件获取提示: `Lastly, ctf-player, go home… more succinctly “~”` <br>
接下来就是去该目录找寻剩下的flag,`cd ~`再`ls`+`cat`成功拿到最后一段。<br>回想一下,这个题目用到了前面“标签,标签,攻击”时用的tab键来 **`延长自己的寿命`**,真的很方便。

# 0x09 Lets Warm Up #
### picoCTF{p} ###
>如果我告诉你一个以 0x70 开头的十六进制单词,它会以 ASCII 开头什么?

根据题目,我第一想法是先把这16进制转成ASCII,转换的结果是 `p`。

# 0x0A Warmed Up #
### picoCTF{61} ###
>十进制(以 10 为底)中的 0x3D(以 16 为底)是什么?

那不就是十六进制转成十进制嘛,转换结果是 `61`。

# 0x0B 2Warm#
### picoCTF{101010} ###
>您可以将数字 42(以 10 为底)转换为二进制(以 2 为底)吗?

`42` 转换成二进制,结果是 `101010`

# 0x0C strings it#
### picoCTF{5tRIng5_1T_d66c7bb7} ###
>你能在[文件](https://jupiter.challenges.picoctf.org/static/94d00153b0057d37da225ee79a846c62/strings)中找到标志而不运行它吗?

不运行它而找到flag,但是我就要运行它,直到他给了我一个提示尝试用`strings` ,我查了一下 `strings命令 在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。`
但是里面的字符串太多了,那我只好再搜索strings方法有没有筛选关键字的,结果是`| grep -i *`,
所以我直接在Linux下 `strings strings | grep -i CTF`

# 0x0D Bases#
### picoCTF{l3arn_th3_r0p35} ###
>这是什么bDNhcm5fdGgzX3IwcDM1意思?我认为这与基地有关。

盲猜是什么编码了,按照题目的Bases,我决定用Bases64解密,结果还真是,拿到flag。

# 0x0E First Grep #
### picoCTF{grep_is_good_to_find_things_f77e0797} ###
>你能在[文件](https://jupiter.challenges.picoctf.org/static/315d3325dc668ab7f1af9194f2de7e7a/file)中找到标志吗?手动查看真的很乏味,有些东西告诉我有更好的方法。

如`0x0C`,依葫芦画瓢 `strings file | grep -i CTF`

# 0x0F Codebook #
### picoCTF{c0d3b00k_455157_197a982c} ###
>在code.py与codebook.txt.
这道题把两个文件下载到同一目录,运行py文件 `python code.py`

# 0x10 convertme.py#
### picoCTF{4ll_y0ur_b4535_9c3b7d4d} ###
>运行 [Python 脚本](https://artifacts.picoctf.net/c/31/convertme.py)并将给定的数字从十进制转换为二进制以获取标志。

运行脚本,给我十进制的`12`,转换成二进制`1100`

# 0x11 fixme1.py #
### picoCTF{1nd3nt1ty_cr1515_182342f7} ###
>修复此 [Python 脚本](https://artifacts.picoctf.net/c/39/fixme1.py)中的语法错误以打印标志。

在Linux系统下使用 `nano` 命令,编辑python脚本,最后一行打印flag缩进错误,去掉空格后保存,按`ctrl+x`根据提示完成保存。

# 0x12 fixme2.py #
### picoCTF{3qu4l1ty_n0t_4551gnm3nt_e8814d03} ###
>修复 [Python 脚本](https://artifacts.picoctf.net/c/65/fixme2.py)中的语法错误以打印标志。

先用`python fixme2.py` 运行一遍脚本,提示出错误是`if flag = “”`应该为`if flag == “”`

# 0x13 Glitch Cat #
### picoCTF{gl17ch_m3_n07_bda68f75} ###
>我们的旗帜打印服务开始出现故障!
`$ nc saturn.picoctf.net 51109`

连接后,发现python语句没有打印,使用`python`调用python,把`chr(0x62) + chr(0x64) + chr(0x61) + chr(0x36) + chr(0x38) + chr(0x66) + chr(0x37) + chr(0x35)+”}”`把这些16进制数据重新print再进行拼接

# 0x14 HashingJobApp #
### picoCTF{4ppl1c4710n_r3c31v3d_3eb82b73} ###
>如果你想用最好的散列,通过这个测试!<br>
>nc saturn.picoctf.net 57689

连接他,提示给出词,用MD5加密。

# 0x15 PW Crack #
### picoCTF{545h_r1ng1ng_fa343060} ###
>你能破解密码来获得标志吗?
在此处下载[密码检查器](https://artifacts.picoctf.net/c/52/level1.py),您还需要同一目录中的加密[标志](https://artifacts.picoctf.net/c/52/level1.flag.txt.enc)。

下载密码检查器后,运行一下需要输入密码,把加密flag删除之后运行python报错,使用`nano`命令查看密码检查器,发现有个函数名为 `level_1_pw_check()`很明显就是密码检查。<br>通过里面的if,发现密码为`1e1a`,再次下载加密flag,运行python,输入密码,success。

# 0x16 PW Crack 2 #
### picoCTF{tr45h_51ng1ng_502ec42e} ###
>你能破解密码来获得标志吗?
在此处下载[密码检查器](https://artifacts.picoctf.net/c/18/level2.py),您还需要同一目录中的加密[标志](https://artifacts.picoctf.net/c/18/level2.flag.txt.enc)。

根据刚做过的经验(bushi,使用`nano`命令查看密码检查器,发现里面的密码检查函数的`if(userpw == chr(0x33) + chr(0x39) + chr(0x63) + chr(0x65)`  <br>那我就复制下来直接调用python,print一下得到`39ce`,运行密码检查器2,输入密码,success。

# 0x17 PW Crack 3 #
### picoCTF{m45h_fl1ng1ng_2b072a90} ###
>你能破解密码来获得标志吗?
在此处下载[密码检查器](https://artifacts.picoctf.net/c/23/level3.py),您还需要同一目录中的加密[标志](https://artifacts.picoctf.net/c/23/level3.flag.txt.enc)和 [哈希](https://artifacts.picoctf.net/c/23/level3.hash.bin)。
有 7 个可能的密码,其中 1 个是正确的。您可以通过检查密码检查器脚本找到这些。

使用`nano`来查看密码检查器,发现行不通了,就想先看看哈希文件里面是什么,于是就去搜索了一下查看怎么查看bin文件,发现是可以的,使用`bvi`命令,查看bin文件,发现还得安装..那就给他安装。然后查看发现一连串数据,猜测是md5,我把加密函数给他单独拎出来放到我的pycharm,对几个密码进行加密,`digest`打印的是二进制,我给他打印16进制数据`hexdigest`,然后发现`4b17`加密后,跟哈希文件里面的一模一样,便运行密码检查器,输入密码,得到flag。<br>
感觉跟多此一举一样,其实在密码检查器里面就带有7个密码,一开始也是想直接一个一个试,但是这样感觉很无趣,便想着用他自己的加密方式来把那些密码一个个加密再对比哈希文件里面的密码,在我认为,思路还是挺有趣的。可能出题者的初衷便是如此吧。

# 0x18 PW Crack 4 #
### picoCTF{fl45h_5pr1ng1ng_cf341ff1} ###
>你能破解密码来获得标志吗?
在此处下载[密码检查器](https://artifacts.picoctf.net/c/59/level4.py),您还需要同一目录中的加密[标志](https://artifacts.picoctf.net/c/59/level4.flag.txt.enc)和 [哈希](https://artifacts.picoctf.net/c/59/level4.hash.bin)。
有 100 个可能的密码,只有 1 个是正确的。您可以通过检查密码检查器脚本找到这些。

好了,现在有100个密码,只有1个是正确的,那怎么办,手动一个个来吗,那太麻烦了,我给自己写了一个for循环来让程序给我自动比对。我先从bin文件里获取到了加密的密码,写出的for循环是这样的<br> 
“`python
for i in pos_pw_list:
    true_pw = hash_pw(i)
    if true_pw == “21153E2FAB120C22F7E3A5DF6A4C2C48”:
        print(i,true_pw)
        break
“`
**注意此函数经过修改**
“`python
def hash_pw(pw_str):
    pw_bytes = bytearray()
    pw_bytes.extend(pw_str.encode())
    m = hashlib.md5()
    m.update(pw_bytes)
    return m.hexdigest().upper() #让他返回16进制的数据并大写
“`

# 0x19 PW Crack 5 #
### picoCTF{h45h_sl1ng1ng_40f26f81} ###
>你能破解密码来获得标志吗?
在此处下载[密码检查器](https://artifacts.picoctf.net/c/80/level5.py),您还需要同一目录中的加密[标志](https://artifacts.picoctf.net/c/80/level5.flag.txt.enc)和 [哈希](https://artifacts.picoctf.net/c/80/level5.hash.bin)。这是一个 [字典](https://artifacts.picoctf.net/c/80/dictionary.txt),其中包含所有可能的密码,基于我们目前看到的密码约定。

跟`0x18`一样的思路,只是密码变多了而且多了个txt文件,多加几行代码,需要读出txt文件的密码。
“`python
f = open(r”dictionary.txt”,”r”)
alln = f.read().splitlines() #去除换行符
pw_list = list(alln)
print(pw_list)
f.close()
“`
“`python
for i in pw_list:
    true_pw = hash_pw(i)
    if true_pw == “E8352E76E260A31EB266012F70DF9A10”:
        print(i, true_pw)
        break
“`

# 0x1A runme.py #
### picoCTF{run_s4n1ty_run} ###
>运行[runme.py](https://artifacts.picoctf.net/c/86/runme.py)脚本以获取标志。使用浏览器或wget在 webshel​​l 中下载脚本。

just do it!

# 0x1B Serpentine #
### picoCTF{7h3_r04d_l355_7r4v3l3d_ae0b80bd} ###
>在 [Python 脚本](https://artifacts.picoctf.net/c/93/serpentine.py)中找到标志!

修改最后面`main()`为`print_flag()`运行即可。

# 0x1C Based #
### picoCTF{learning_about_converting_values_02167de8} ###
>要获得真正的 1337,您必须了解不同的数据编码,例如十六进制或二进制。你能从这个程序中获得标志来证明你正在成为 1337 吗?连接`nc jupiter.challenges.picoctf.org 15130`

我还特地去搜索了1337是什么。<br>
>1337 一般是超高水准或作弊的意思
多数是 不可思议的人 一般是这么理解的
在黑客里1337是黑客语言,leet

讲道理,这个进制转换折腾了我好久,还是老打老实找工具转换吧。

# 0x1D plumbing #
### picoCTF{digital_plumb3r_ea8bfec7} ###
>有时您需要在文件之外处理流程数据。你能找到一种方法来保留这个程序的输出并搜索标志吗?连接到`jupiter.challenges.picoctf.org 14291`

翻翻之前的writeup,还记得`netcat`?`grep`?是的,<br>`netcat jupiter.challenges.picoctf.org 14291 | grep -i CTF`

# 0x1E mus1c #
### picoCTF{rrrocknrn0113r} ###
>我给你写了[一首歌](https://jupiter.challenges.picoctf.org/static/c0863a3b0170d6dd176be3a595b4b75e/lyrics.txt)。将其放入 picoCTF{} 标志格式。

这题我是真没想到,百度了一下,发现有个rockstar-py,但是试了一下不行,然后再查找,发现有人发过,于是选择了`kaiser-ruby execute lyrics.txt` 

# 0x1F flag_shop #
### picoCTF{m0n3y_bag5_68d16363} ###
>有卖东西的旗子店,你能买旗子吗?来源。连接  `nc jupiter.challenges.picoctf.org 44566`

去搜索引擎搜索`int`取值范围。int有最大值和最小值,最大值`2^31-1`+1就会溢出就会回到最小负整数`-2^31`。一个仿冒flag需要花费900,那么最多能买`(2147483647+1100)//900=2386094`个,那我们加1就可以让他溢出`2386095`个。

# 0x20 1_wanna_b3_a_r0ck5tar #
### picoCTF{BONJOVI} ###
>我给你写了另[一首歌](https://jupiter.challenges.picoctf.org/static/96904d361d61fada5bd2d13536706f9a/lyrics.txt)。将标志放入 picoCTF{} 标志格式

直接运行的话,并不会成功,我用github上面的`kaiser-ruby transpile lyrics.txt`,给出了一串赋值语句,再用python脚本转ASCII编码

请登录后发表评论