1. 程式人生 > >picoCTF 2018 wp《二》

picoCTF 2018 wp《二》

接上一次的

@Time : 2018/10/7

hertz

直接交就好,不用加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,在下面的部落格裡面寫的

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)

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

由於還是太菜,只能寫基礎題,沒法完全完成,之後能完善的再完善