<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    超適合小白!Linux 之 shell 編程入門

    VSole2022-07-25 06:41:09

    一、變量的運用

    1. 變量命名

    界說變量時,變量名不加美元符號($,PHP言語中變量需求),如:

    your_name="yikoulinux"
    

    留神,變量名和等號之間不能有空格,這或許和你了解的悉數編程言語都不相同。一同,變量名的命名須遵從如下規矩:

    • 命名只能運用英文字母,數字和下劃線,首個字符不能以數字開端。
    • 中心不能有空格,能夠運用下劃線(_)。
    • 不能運用標點符號。
    • 不能運用bash里的要害字(可用help指令檢查保存要害字)。
    • 變量稱謂一般習氣為大寫

    有用的 Shell 變量名示例如下:

    RUNOOB
    LD_LIBRARY_PATH
    _var
    var2
    

    無效的變量命名:

    ?var=123
    user*name=runoob
    

    2. 常用變量

    Linux Shell 中的變量分為:體系變量和用戶自界說變量。

    1. 體系變量:HOME、HOME、HOME、PWD、SHELL、SHELL、SHELL、USER 等等比方:echo $HOME 等等..
    2. 用戶自界說變量:
    3. 界說變量:變量=值

    2)顯現當時 shell 中悉數變量:set

    3)吊銷變量:unset 變量

    4) 聲明靜態變量:readonly 變量,留神:不能 unset

    1. 將指令的回來值賦給變量(要害)

    除了顯式地直接賦值,還能夠用句子給變量賦值,如:

    1)

    A=ls -la

    反引號,作業里邊的指令,并把作用回來給變量 A

    2)

    A=$(ls -la)
    

    $等價于反引號

    3)

    for file in `ls /etc`
    

    for file in $(ls /etc)
    

    以上句子將 /etc 下目錄的文件名循環出來。

    3. 舉例

    例1:

    意義如下:

    1. 界說一個變量名為name的變量,值為一口linux
    2. 輸出變量name的值
    3. 界說一個變量名為number的變量,初始值為22
    4. 輸出變量number的值
    5. 直接輸出帶變量的字符串
    6. 運用雙引號輸出帶變量的字符串
    7. 運用單引號輸出帶變量的字符串
    8. 運用雙引號輸出帶不存在的變量的字符串,不存在的變量默許為空
    9. 運用雙引號來聲明字符串中的變量
    10. 運用大括號{&變量名},聲明字符串中的變量

    留神:

    上述變量是暫時變量,當關閉終端后,變量就會消失。

    例2:

    刪去變量并檢查指定變量

    1. unset name 刪去變量name
    2. 檢查name變量

    二、字符串的操作

    在做shell批處理程序時分,經常會涉及到字符串相關操作。有許多指令句子,如:awk,sed都能夠做字符串各種操作。

    其實shell內置一系列操作符號,能夠抵達相似作用,我們知道,運用內部操作符會省掉主張外部程序等時刻,因而速度會非常的快。

    1. 字符串操作(長度,讀取,替換)

    表達式意義${#string}$string的長度${string:position}在 $string中, 從方位$position開端提取子串${string:position:length}在$string中, 從方位$position開端提取長度為$length的子串${string#substring}從變量$string的開端, 刪去最短匹配$substring的子串${string##substring}從變量$string的開端, 刪去最長匹配$substring的子串${string%substring}從變量$string的完畢, 刪去最短匹配$substring的子串${string%%substring}從變量$string的完畢, 刪去最長匹配$substring的子串${string/substring/replacement}運用$replacement, 來替代榜首個匹配的$substring${string//substring/replacement}運用$replacement, 替代悉數匹配的$substring${string/#substring/replacement}假定$string的前綴匹配$substring, 那么就用$replacement來替代匹配到的$substring${string/%substring/replacement}假定$string的后綴匹配$substring, 那么就用$replacement來替代匹配到的$substring

    闡明:”* $substring”能夠是一個正則表達式.

    2. 字符串操作舉例

    a) 核算字符串長度

    root@ubuntu:/home/peng# test='I love china'
    root@ubuntu:/home/peng# echo ${#test}
    12
    

    ${#變量名}得到字符串長度

    b) 截取字串

    root@ubuntu:/home/peng# test='I love china'
    root@ubuntu:/home/peng# echo ${test:5}
    e china
    root@ubuntu:/home/peng# echo ${test:5:10}
    e china
    root@ubuntu:/home/peng#
    root@ubuntu:/home/peng# echo ${test:4:10}
    ve china
    

    ${變量名:開端:長度}得到子字符串

    c) 字符串刪去

    root@ubuntu:/home/peng# test='c:/windows/boot.ini'
    root@ubuntu:/home/peng# echo ${test#/}
    c:/windows/boot.ini
    root@ubuntu:/home/peng# echo ${test#*/}
    windows/boot.ini
    root@ubuntu:/home/peng# echo ${test##*/}
    boot.ini
    root@ubuntu:/home/peng# echo ${test%/*}
    c:/windows
    root@ubuntu:/home/peng# echo ${test%%/*}
    c:
    

    ${變量名#substring正則表達式}從字符串開端開端配備substring,刪去匹配上的表達式。
    ${變量名%substring正則表達式}從字符串完畢開端配備substring,刪去匹配上的表達式。
    

    留神:

    ${test##*/},${test%/*} 分別是得到文件名,或許目錄地址最簡略辦法。
    

    d) 字符串替換

    root@ubuntu:/home/peng# test='c:/windows/boot.ini'
    root@ubuntu:/home/peng# echo ${test///}
    c:windows/boot.ini
    root@ubuntu:/home/peng# echo ${test////}
    c:windowsboot.ini
    

    ${變量/查找/替換值} 一個“/”標明替換榜首個,”//”標明替換悉數,當查找中出現了:”/”請加轉義符”/”標明。
    

    留神:

    字符串的方位是從0開端,-1標明該字符串畢竟一個方位;

    截取字符串的時分,是左閉右開的,從左面的方位開端,一直到右邊的方位完畢,不包括右邊的方位。

    三、 腳本的創建和實施

    shell腳本并不能作為正式的編程言語,因為它是在Linux的shell中作業的,所以稱他為shell腳本。

    事實上,shell腳本就是一些指令的集結。

    我們一般把悉數的操作都記錄到一個文檔中,然后去調用文檔中的指令,這樣一步操作就能夠完成了

    一般shell腳本都是放在/usr/local/sbin的目錄下。

    1) shell腳本的樹立

    在linux體系中,shell腳本(bash shell程序)一般是在編輯器(如vi/vim)中編寫,由unix/linux指令、bash shell指令、程序結構操控句子和注釋等內容組成,舉薦用vim編輯器。

    2) 腳本開端(榜首行)

    一個規范的shell腳本的榜首行會指出由哪個程序(闡冥具)來實施腳本中的內容,在linux bash編程中一般為:

    #!/bin/bash
    

    #!/bin/sh  <==255個字符以內
    

    其間開端的”#!”又稱為幻數,在實施bash腳本的時分,內核會根據”#!”后的闡冥具來承認該用哪個程序闡明腳本中的內容,

    留神:

    這一行有必要在每個腳本頂端的榜首行,假定不是榜首行則為腳本注釋行,例如下面的比方。

    root@ubuntu:/home/peng# cat test1.sh
    #!/bin/bash
    echo "scajy start"
    #!/bin/bash      <==寫到這兒就是注釋
    #!/bin/sh
    echo "scajy en:"
    

    sh和bash的差異

    root@ubuntu:/home/peng# ls -l /bin/sh
    lrwxrwxrwx 1 root root 4 Sep 21  2015 /bin/sh -> bash
    

    提示:sh為bash的軟聯接,這兒舉薦用標準寫法#!/bin/bash

    Bash是GNU/Linux默許的shell,和Bourne shell (sh)兼容,Bash采用了Korn shell (Ksh)和C shell(csh)的特征。符合IEEE POISIX P10003.2/ISO 9945.2 shell and tools 標準。

    Centos和redhat linux 下默許的shell 均為bash 因而,在寫shell腳本的時分,我們的腳本的開端也能夠不加#!/bin/bash。但假定當時的shell非你默許的shell時,比方tcsh,那么久有必要要寫#!了。不然腳本文件就只能實施一些指令的集結,不能夠運用shell內建的指令了,主張讀者養成習氣,不管什么腳本最好都加上開端言語標識,這在后文的shell編程標準中會再次提到。

    假定腳本的開端不指定解析器,那么,就要用對應的闡冥具來實施腳本。例如:bash test.sh

    3) 腳本注釋

    在shell腳本中,跟在(#)#號后邊的內容標明注釋,用來對腳本進行注釋闡明,注釋部分不會被實施,僅僅是給人看的,注釋可自一行,也能夠跟在腳本指令后邊與指令在同一行,開發腳本時,假定沒有注釋,其他人就很難理解腳本畢竟在做什么,時刻長了自己也會忘掉。因而,我們要盡量成為所做的作業(腳本等)書寫注釋的習氣,不光是便當他人,也是便當自己。不然寫完一個腳本后或許后就記不起腳本的用處了,在從頭閱覽也會糟蹋許多名貴時刻。關于團隊的協作也晦氣。

    4) 舉例

    創建文件first.sh,并復制如下信息到文件:

    #cd usr/local/sbin
    # vim first.sh
    #! /bin/bash
    ##this is my first shell script
    #wirten by 一口Linux 2021.5.3
    date
    echo "Hello world"
    

    shell腳本一般以.sh為后綴名

    實施腳本

    以下幾種辦法都能夠:

    #sh first.sh
    #bash first.sh
    #./first.sh
    #./first.sh
    

    會報權限不行

    能夠:

    #chmod +x first.sh
    

    四、環境變量的運用

    1. 知識點詳解

    1. Linux Shell 中的變量分為:體系變量和用戶自界說變量。
    2. 體系變量:HOME、HOME、HOME、PWD、SHELL、SHELL、SHELL、USER 等等比方:echo $HOME 等等..
    3. 用戶自界說變量:
    1) 界說變量:變量=值
    2)顯現當時 shell 中悉數變量:set
    3)吊銷變量:unset 變量
    4) 聲明靜態變量:readonly 變量,留神:不能 unset
    
    1. 界說變量的規矩
    1) 變量稱謂能夠由字母、數字和下劃線組成,可是不能以數字開端。
    2) 等號兩頭不能有空格
    3) 變量稱謂一般習氣為大寫
    
    1. 將指令的回來值賦給變量(要害)
    1)A=`ls -la` 反引號,作業里邊的指令,并把作用回來給變量 A
    2)A=$(ls -la) 等價于反引號
    
    1. 設置環境變量的根本語法:
    export 變量名=變量值 (功用描繪:將 shell 變量輸出為環境變量)
    source 配備文件(功用描繪:讓修改后的配備信息立即收效)
    echo $變量名(功用描繪:查詢環境變量的值)
    

    2. 操作詳解

    檢查環境變量HOME、PATH的值:

    root@ubuntu:/home/peng# echo $HOME
    /root
    root@ubuntu:/home/peng# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peng/toolchain/gcc-4.6.4/bin:/home/peng/toolchain/arm-cortex_a8/bin
    

    檢查windows體系中的環境變量

    檢查環境變量PATH中悉數的途徑

    腳本途徑設備舉例

    辦法1:

    修改環境環境變量:在PATH中增加指定“軟件設備”的目錄:

    root@ubuntu:/home/peng/yikou# pwd
    /home/peng/yikou
    root@ubuntu:/home/peng/yikou# ls
    a.sh
    root@ubuntu:/home/peng/yikou# sh a.sh
    Sun May  2 17:00:14 PDT 2021
    Hello world
    root@ubuntu:/home/peng/yikou# export PATH=$PATH:/home/peng/yikou/
    root@ubuntu:/home/peng/yikou# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peng/toolchain/gcc-4.6.4/bin:/home/peng/toolchain/arm-cortex_a8/bin:/home/peng/yikou/
    root@ubuntu:/home/peng/yikou# a.sh
    bash: /home/peng/yikou/a.sh: 權限不行
    root@ubuntu:/home/peng/yikou# chmod 777 a.sh 
    root@ubuntu:/home/peng/yikou# a.sh 
    Sun May  2 17:01:34 PDT 2021
    Hello world
    

    辦法2:

    修改環境變量配備文件的辦法,使修改后的環境變量永久收效

    vim /etc/bash.bashrc
    

    source .bash.rc ,使配備文件從頭收效
    

    關閉終端,翻開并從頭從頭輸入:a.sh依舊能夠實施。

    root@ubuntu:/home/peng/# a.sh 
    Sun May  2 17:10:00 PDT 2021
    Hello world
    

    五、數學運算

    1. 知識點詳解

    運算符運用的語法:

    expr操作符對照表

    操作符意義

    2. 操作詳解

    1. 比較大小,只能對整數進行比較,需求加空格,linux 保存要害字要轉義
    root@ubuntu:/home/peng/yikou# num1=30
    root@ubuntu:/home/peng/yikou# num2=50
    root@ubuntu:/home/peng/yikou# expr $num1 > $num2
    

    檢查上一條指令有沒有實施成功:

    回來0 成功,其他失利

    1. 小于、小于等于、大于等于
    expr $num1 < $num2
    expr $num1 <= $num2
    expr $num1 >= $num2
    

    1. 運算 加、減、乘、除
    # 加
    num1=17
    num2=5
    expr $num1 + $num2
    # 減
    num3=`expr $num1 + $num2`
    echo $num3
    expr $num1 - $num2
    # 乘
    expr $num1 * $num2
    expr $num1 / $num2
    # 取余數
    expr $num1 % $num2
    

    需求留神事項:

    兩個小括號的核算辦法,要賦值,不然會報錯

    六、腳本與用戶交互

    操作指令行參數

    1. 讀取參數

    bash shell用方位參數變量(positional parameter)存儲指令行輸入的悉數參數,包括程序名。

    其間,0標明程序名,0標明程序名,0表示程序名,1標明第1個參數,2標明第2個參數,…,2標明第2個參數,…,2表示第2個參數,...,9標明第9個參數。假定參數個數多于9個,有必要如下標明變量:10,{10},10,{11},…

    #!/bin/bash
    # author:一口Linux
    for((count = 1; count <= $1; count++))
    do
    echo The number is $count.
    done
    

    實施作用:

    修改腳本如下:

    echo $1, $2, $3, $4
    

    實施作用如下:

    2 讀取程序名

    首要想到的是運用0,可是0,可是0,但是0獲取的文件名包括./以及途徑等前綴信息,如下:

    echo The command entered is: $0
    # 作業:./
    # 輸出:The command entered is: ./14.sh
    

    假定想僅得到文件名,而不包括./,能夠運用basename指令:

    name=`basename $0`
    echo The command entered is: $name
    # 作業:./
    # 輸出:The command entered is: 14.sh
    

    3 特別變量

    $#標明指令行參數的個數:
    #!/bin/bash
    # author:一口Linux
    params=$#
    echo The number of params is: $params
    for((i = 1; i <= params; i++))
    do
    echo The param is: $i
    done
    

    實施作用

    假定想獲取悉數的參數,當然能夠運用#和循環逐個遍歷。也能夠運用如下兩個特別變量:*將悉數的指令行參數看作一個整體存儲,而$@將指令行中以空格距離的參數單獨存儲,如下:

    #!/bin/bash
    # author:一口Linux
    count=1
    for param in "$*"
    do
    echo "$* parameter $count = $param"
    count=$[ $count + 1 ]
    done
    count=1
    for param in "$@"
    do
    echo "$@ parameter $count = $param"
    count=$[ $count + 1 ]
    done
    

    4 底子的讀取

    read指令承受從鍵盤或文件描繪符中的輸入數據,將其存儲到一個指定變量中。

    選項:

    -p:指定讀取值時的提示符;
    -t:指定讀取值時等候的時刻(秒),假定沒有在指定的時刻內輸入,就不再等候了。。
    -n:設置答應輸入字符的個數
    

    參數

    變量:指定讀取值的變量名
    

    操作詳解

    1. 例1
    #!/bin/bash
    # author:一口Linux
    # testing the read option
    read -p "Please enter your name: " name
    echo "Hello $name."
    

    實施作用

    1. 例2

    read指令中,能夠根據需求將輸入的數據保存在多個變量中,假定指定的變量比較少,那么畢竟一個變量將包括余下的悉數輸入,如下所示:

    #!/bin/bash
    # author:一口Linux
    # testing the read option
    read -p "Enter the values: " val1 val2 val3
    echo "$val1"
    echo "$val2"
    echo "$val3"
    

    實施作用:

    1. 歸納比方

    提示用戶輸入一個正整數num,然后核算1+2+3+…+num的值;有必要對num是否為正整數做判別,不符合應當作業再次輸入

    思路:

    • expr只能對整數進行核算,直接用expr 和一個整數核算獲取 $? 的值來判別是否為整數
    • 在運用 expr $num1 > 0 判別是否大于0
    #!/bin/bash
    # author:一口Linux
    while true
    do
    read -p "please input a positive number: " num
    # 判別數是否是整數
    expr $num + 1 &> /dev/null
    if [ $? -eq 0 ];then
    # 判別這個整數是否大于0,大于0回來1
    if [ `expr $num > 0` -eq 1 ];then
    #echo "yes,positive number"
    # $sum沒有賦值,默許為0
    for i in `seq 0 $num`
    do
    sum=`expr $sum + $i`
    done
    echo "1+2+3+...+$num = $sum"
    # 實施核算需求退出
    exit
    fi
    fi
    echo "error,input enlegal"
    continue
    done
    

    測驗:

    七、聯絡運算符

    有時分我們需求比較兩個數字的大小聯絡,這時分就要用到聯絡運算符。聯絡運算符只支撐數值運算,不支撐字符運算。

    1. 知識點詳解

    Shell 言語支撐下面這些聯絡運算符:

    -eq:檢測兩個數是否持平,持平回來 true。
    -ne:檢測兩個數是否不持平,持平回來 true。
    -gt:檢測左面的數是否大于右邊的,假定是回來 true。
    -lt:檢測左面的數是否小于右邊的,假定是回來 true。
    -ge:檢測左面的數是否大于等于右邊的,假定是回來 true。
    -le:檢測左面的數是否小于等于右邊的,假定是回來 true。
    

    2. 操作詳解

    #!/bin/bash
    # author:一口Linux
    a=10
    b=20
    if [ $a -gt $b ]
    then
    echo "a great than b"
    else
    echo "a not great than b"
    fi
    

    實施作用!如下:

    八、字符串運算符

    1. 知識點詳解

    = 比較兩個字符串是否持平
    != 比較兩個字符串是否不持平
    -z 檢測字符串的長度是否為零
    -n  檢測字符串的長度是否不為零
    $字符名 變量是否有負值(為空),有回來True,沒有回來False
    

    2. 操作詳解

    #!/bin/bash
    # author:一口Linux
    ###本腳本首要用于字符串運算符
    if [ ! $1 ]
    then
    echo "榜首個參數為空"
    echo "****************************************************************"
    echo "****************************************************************"
    echo "**************實施用例的格式為:sh $0 變量1 變量2***************"
    echo "****************************************************************"
    echo "****************************************************************"
    break
    else
    if [ ! $2 ]
    then
    echo "第二個參數為空"
    echo "****************************************************************"
    echo "****************************************************************"
    echo "**************實施用例的格式為:sh $0 變量1 變量2***************"
    echo "****************************************************************"
    echo "****************************************************************"
    break
    else
    ###1、檢測兩個字符串是否持平;
    if [ $1 = $2 ]
    then
    echo "這是榜首個判別句子"
    echo "變量1等于變量2"
    else
    echo "這是榜首個判別語句"
    echo "變量1不等于變量2"
    fi
    ###2、檢測兩個字符串是否不持平;
    if [ $1 != $2 ]
    then
    echo "這是第二個判別句子"
    echo "變量1不等于變量2"
    else
    echo "這是第二個判別句子"
    echo "便量1等于變量2"
    fi
    ###3、檢測字符串長度是否為0
    if [ -z $1 ]
    then
    echo "這是第三個判別段句子"
    echo "變量1字符串長度為0"
    else
    echo "這是第三個判別段句子"
    echo $1
    fi
    ###4、檢測字符串長度是否不為0
    if [ -n $2 ]
    then
    echo "這是第四個判別句子"
    echo "變量2字符串長度不為0"
    echo $2
    else
    echo "這是第四個判別句子"
    echo "變量2字符串長度為0"
    fi
    ###5、檢測字符串是否不為空
    if [ $1 ]
    then
    echo "這是第五個判別句子"
    echo "變量1不為空"
    else
    echo "這是第五個判別句子"
    echo "變量1為空"
    fi
    fi
    fi
    

    測驗作用:

    九、shell文件及目錄常用操作的幾個實例

    1. 提取途徑的目錄和文件名

    提取目錄:

    dirname $path
    

    提取文件名:

    basename $path
    
    1. 批量重命名帶有空格文件
    function processFilePathWithSpace(){
    find $1 -name "* *" | while read line
    do
    newFile=`echo $line | sed 's/[ ][ ]*/_/g'`
    mv "$line" $newFile
    logInfo "mv $line $newFile $?"
    done
    }
    
    1. 遍歷文件內容
    cat /tmp/text.txt | while read line
    do
    echo $line
    done
    
    1. 文件不存在,則創建文件
    [ -f $logFile ] || touch $logFile
    
    1. 遞歸遍歷目錄
    function getFile(){
    for file in `ls $1`
    do
    element=$1"/"$file
    if [ -d $element ]
    then
    getFile $element
    else
    echo $element
    fi
    done
    }
    
    1. 清空文件內容
    cat /dev/null > $filePath
    
    shellsubstring
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    前言看到一篇文章講到這個內容,就打算自己也整理一下順便梳理一下思路0X01 信息收集1.收集系統信息:系統信息至關重要,關乎我們后面怎么提權中文系統:systeminfo|findstr /B /C:"OS 名稱" /C:"OS 版本". OS 名稱: Microsoft Windows Server 2008 R2 Standard. 禁用 入站 Internet Explorer / C:\Program Files \In. 800 TCP 啟用 入站 test
    留神,變量名和等號之間不能有空格,這或許和你了解的悉數編程言語都不相同。一同,變量名的命名須遵從如下規矩:命名只能運用英文字母,數字和下劃線,首個字符不能以數字開端。不能運用bash里的要害字。變量稱謂一般習氣為大寫有用的 Shell 變量名示例如下:RUNOOB. 事實上,shell腳本就是一些指令的集結。
    2022年04月12日,Apache官方發布了Apache Struts2的風險通告,漏洞編號為CVE-2021-31805,漏洞等級:高危,漏洞評分:8.5。Apache Struts 2是一個用于開發Java EE網絡應用程序的開放源代碼網頁應用程序架構。它利用并延伸了Java Servlet API,
    GuLoader_VBS惡意加載器分析報告
    0x01 前言最近在改寫 yso,覺得自己基礎太差了,想先閱讀一下 sqlmap、冰蝎以及一些其他工具的開發思路。0x03 冰蝎的使用與流量分析冰蝎的使用我們看冰蝎的客戶端界面,對于 shell 其實是沒有輸入密碼模塊的,其實在冰蝎當中 shell 是通過傳輸協議配置的。這一傳輸協議的加密函數是用 Java 寫的,并且 key 是默認的,不需要自己修改,我們點擊生成服務端,則會生成三個 shell 文件,分別為?這種加密方式的攻防性),代碼如下,此處代碼和 v3.0 的相當不一樣。
    Spring框架是一個開放源代碼的J2EE應用程序框架,是針對bean的生命周期進行管理的輕量級容器。Spring可以單獨應用于構筑應用程序,也可以和Struts、Webwork、Tapestry等眾多Web框架組合使用,并且可以與 Swing等桌面應用程序AP組合。 Spring框架主要由七部分組成,分別是 Spring Core、 Spring AOP、 Spring ORM、 Spring
    0x00 前言好久沒寫真實漏洞挖掘案例了,今天寫一筆。直接發漏洞細節很生硬,大家也學不到什么,只有帶入感情,留下筆者的想法,才能產生共鳴,真正的幫助到別人。四個漏洞描述順序:存儲過程sql注入;
    0x00 目標情況一個web站點111.*.*.63,只有一個登陸框,測試了沒有注入,沒有弱口令,掃描了全端口,沒有發現什么有用的信息。0x02 找網站絕對路徑判斷是不是dba權限uname=test';if(1=(select?判斷是否是站庫分離uname=test';if?sqlmap查看建表成功,sqlmap -r 1.txt --dbms "Microsoft SQL Server" -D "tempdb" --tables查找網站文件并把路徑寫入到表tt_tmp. python sqlmap.py -r 1.txt --dbms="Microsoft SQL Server" --technique=S -D "tempdb" -T "tt_tmp" -C "tmp1" --dump -v 30x03 嘗試在111.*.*.59主機getshell嘗試寫一句話先在下面的路徑中寫入txt文件驗證網站路徑到底是哪一個D:\bak\20170226\bak\20170403.2\webapp\Content\layer\. 依次寫文件然后訪問,在寫入?
    MTCTF-2022 部分WriteUp
    2022-11-23 09:35:37
    MTCTF 本次比賽主力輸出選手Article&Messa&Oolongcode,累計解題3Web,2Pwn,1Re,1CryptoWeb★easypickle題目給出源碼:。import base64import picklefrom flask import Flask, sessionimport osimport random. @app.route('/')def hello_world(): if not session.get: session['user'] = ''.join return 'Hello {}!\x93作用同c,但是將從stack中出棧兩元素分別導入的模塊名和屬性名:此外對于藍帽杯WP還存在一個小問題,原題采用_loads函數加載pickle數據但本題是loads,在opcodes處理上會有些微不通具體來說就是用loads加載時會報錯誤如下:對著把傳入參數換成元組就行,最終的payload如下
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类