Rumah >Operasi dan penyelenggaraan >Keselamatan >Bagaimana untuk menganalisis penulisan soalan CTF
Ini adalah soalan PWN yang agak mudah Mula-mula, seret ke dalam IDA dan lihat secara ringkas program, seperti yang ditunjukkan dalam rajah
Saya dapati Semasa membaca, tiada perlindungan tindanan, jadi apabila membaca 0x34, alamat pemulangan permainan boleh diganti, pertama melalui tulis(1,tulis,4) (permainan digunakan sebagai alamat pemulangan tulis). Baca alamat tulis dengan cara ini, supaya anda boleh mendapatkan alamat sistem, kerana ia berjalan dalam gelung sekali lagi, dan juga menulis /bin/sh pada 0x804A06C
.replace("","").replace("r","").replace("n","").decode("hex")
dword_403018=""" 0200 00 00 02 00 00 00
0200 00 00 02 00 00 00 00 00 00 00 00 00 00 00
"""ganti).(ganti) r","").replace("n","").decode("hex")
#text:0040110E mov ecx, [ebp+var_4]
#.text : 0040111 XOR ECX, EBP
# Teks: 00401113 MOV DWORD_40301C, 3
# Teks: 0040111d MOV Dword_403020, 40302020, 40302000 🎜>
#Nilai ingatan telah berubah, jadi ubah suai dword_403018= dword_403018[0:4] + 'x03' + dword_403018[5:8] 0 :12] + 'x07' +dword_403018[13:]printdword_403018.encode("hex")fori dalam julat(0 ,42): hightnum= ord(dword_403018[ord(bait_402178[i])*4]) numbershow= hightnum+ ord(bait_402138[ord(var_6c[i ])*4]) printchr(numbershow),bendera{06b16a72-51cc-4310-88ab-70ab68290e22}0x03 sqliSoalan ini bersamaan serangan. Nama pengguna berdaftar ialah "admin" dan kata laluan adalah kata laluan yang memenuhi peraturan. Kemudian log masuk dan anda akan melihat benderabendera{b5a1f9c5-ac30-4e88-b460-e90bcb65bd70}0x04 RSAopensslrsa -maklumkan PEM -in pubkey1.pem -pubin -textKunci Awam: (2048 bit)Modulus: 00:89:89:a3:98:98:84:56:b3:fe:f4:a6:ad:86:df: 3c:99:57:7f:89:78: 04:8d:e5:43:6b:ef:c3:0d:8d: 8c:94:95:89:12:aa:52:6f:f3:33:b6:68:57: 30:6e: bb:8d:e3:6c:2c:39:6a:84:ef:dc:5d:38:25:02:da: a1:a3: f3:b6:e9:75:02:d2:e3:1c:84:93:30:f5:b4: c9:52:57:a1:49:a9:7f:59:54: ea:f8:93:41:14:7a: dc:dd:4e:95:0f:ff:74:e3:0b:be:62:28:76:b4:2e: ea:c8:6d:f4:ad:97:15:d0:5b:56:04:aa:81:79:42: 4c:7d:9a:c4:6b: d6:b5:f3:22:b2:b5:72:8b:a1:48: 70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c: e3:e0:17: 03:f0:4f:94:a4:31:d9:95:4b:d7:ae:2c:7d:d6:e8: 79: b3:5f:8a:2d:4a:5e:fb:e7:37:25:7b:f9:9b:d9: ee:66:b1:5a:ff:23:3f:c7: 7b:55:8a:48:7d:a5:95: 2f:be:2b:92:3d:a9:c5:eb:46:78:8c:05:03:36:b7: e3:6a:5e:d8:2d:5c:1b:2a:eb:0e:45:be:e4:05:cb: e7:24:81:db: 25:68:aa:82:9e:ea:c8:7d:20:1a:5a: 8f:f5:ee:6f:0b:e3:81:92:ab:28:39: 63:5f:6c:66: 42:17Eksponen:2333 (0x91d)opensslrsa -maklumkan PEM -in pubkey2.pem -pubin -textKunci Awam:(2048 bit)Modulus: 00:89:89:a3:98:98:84:56:b3:fe:f4:a6: iklan:86:df: 3c:99:57:7f:89:78:04:8d:e5:43:6b:ef:c3:0d:8d: 8c: 94:95:89:12:aa:52:6f:f3:33:b6:68:57:30:6e: bb:8d:e3:6c:2c:39:6a:84: ef:dc:5d:38:25:02:da: a1:a3:f3:b6:e9:75:02:d2:e3:1c:84:93:30:f5:b4: c9:52:57:a1:49:a9:7f:59:54:ea:f8:93:41:14:7a: dc:dd:4e:95: 0f:ff:74:e3:0b:be:62:28:76:b4:2e: ea:c8:6d:f4:ad:97:15:d0:5b:56:04: aa:81:79:42: 4c:7d:9a:c4:6b:d6:b5:f3:22:b2:b5:72:8b:a1:48: 70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c:e3:e0:17: 03:f0:4f:94:a4:31:d9: 95:4b:d7:ae:2c:7d:d6:e8: 79:b3:5f:8a:2d:4a:5e:fb:e7:37:25:7b:f9:9b: d9: ee:66:b1:5a:ff:23:3f:c7:7b:55:8a:48:7d:a5:95: 2f:be:2b: 92:3d:a9:c5:eb:46:78:8c:05:03:36:b7: e3:6a:5e:d8:2d:5c:1b:2a:eb:0e: 45:be:e4:05:cb: e7:24:81:db:25:68:aa:82:9e:ea:c8:7d:20:1a:5a: 8f:f5:ee:6f:0b:e3:81:92:ab:28:39:63:5f:6c:66: 42:17Eksponen:23333 (0x5b25).Dapat dilihat bahawa kedua-dua kunci awam n adalah sama, tetapi e adalah berbeza Serangan mod biasa menggunakan RSAPython adalah seperti berikut:
<.>fromlibnum import n2s ,s2n
fromgmpy2 import invert
importbase64
importgmpy2
defbignumber(n):
.decode("hex ") rn= 0 forb in n: rn= rn rn+= ord( b)returnrnn ="""00:89:89:a3:98:98:84:56:b3:fe:f4:a6:ad:86:df: 3c:99:57:7f:89:78:04:8d:e5:43:6b:ef:c3:0d:8d: 8c:94:95:89: 12:aa:52 :6f:f3:33:b6:68:57:30:6e:
bb:8d:e3:6c:2c:39:6a:84:ef:dc:5d:38:25:02:da:
a1:a3:f3:b6:e9:75 :02:d2:e3:1c:84:93:30:f5:b4:
c9:52:57:a1:49:a9:7f:59:54:ea:f8:93:41 :14:7a:
dc:dd:4e:95:0f:ff:74:e3:0b:be:62:28:76:b4:2e:
ea:c8 :6d:f4:ad:97:15:d0:5b:56:04:aa:81:79:42:
4c:7d:9a:c4:6b:d6:b5:f3:22 :b2:b5:72:8b:a1:48:
70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c:e3:e0:17:
03:f0:4f:94:a4:31:d9:95:4b:d7:ae:2c:7d:d6:e8:
79:b3:5f:8a:2d :4a:5e:fb:e7:37:25:7b:f9:9b:d9:
ee:66:b1:5a:ff:23:3f:c7:7b:55:8a:48 :7d:a5:95:
2f:be:2b:92:3d:a9:c5:eb:46:78:8c:05:03:36:b7:
e3 :6a:5e:d8:2d:5c:1b:2a:eb:0e:45:be:e4:05:cb:
e7:24:81:db:25:68:aa:82 :9e:ea:c8:7d:20:1a:5a:
8f:f5:ee:6f:0b:e3:81:92:ab:28:39:63:5f:6c:66 :42:17"""
.replace(":",").replace("",").replace("r",").replace("n"," ")
#printn
n =bignumber(n)
printhex(n)
e1= 2333
e2=23333
defegcd(a,b):
ifa == 0:
return(b,0,1)
lain:
,y,x= egcd(b%a,a)
return(g,x - (b //a)*y,y)
flag1 = base64.b64decode (open( "flag1.enc","rb").read())
flag2 = base64.b64decode(open("flag2.enc","rb").read())
c1= s2n(bendera1)
c2= s2n(bendera2)
c2= songsang(c2,n)
#s= egcd(e1,e2)
#cetakan
s =gmpy2.gcdext(e1,e2)
#cetakan
s1= s[1]
s2= 0 - s[2]
cetakan1
cetakan2
m =pow(c1,s1,n) * pow(c2,s2,n)%n
down.php?urls=data/../config.php下载文件发现DB_user/mvoa用户的密码define('B_PWD' !hpp3Dn1.');bendera值:B!hpp3Dn1.2.http://url/www.zip,获得网站备份文件,在config.php发/现用户的密码define('DB_PWD','mypasswd');flag值:mypasswd
0x06 暗度陈仓.
/u-are-admin/download.php?dl= 2.在/u-Are-Admin/目录,可以上传文件,上传大專Php/绕过)一句话木马,菜刀链接,netuser查看系统管理员Hack用户的全名flag值17>0x07 瞒天过海
1.AWVS扫到注入点/cat.php?id=2sqlmap直接能跑,通过注入即可获得后台管理味>bendera值:serverlogflag值:rootserver3.录password.txt内容/classes/downloadfile.php ?file=../../../../../../password.txt bendera值:c9c35cf409344312146fa7546a94d1a60x08 偷梁换柱1 AWVS.名密码登录, pusat membeli-belah,即使文件真正地址,/admin/uploads/111.php.png直接菜刀链接,png也能当成php直接解析,然城net得系统管理员ichunqiu用户的全名。3.菜刀能够直接查看/tmp/access.log的内容的前16位
华容容的前16位 华厜>华厮>1.个大马的txt文件,然后getshell,构造路径为
url/info/include.php?filename=..//sjk-uploads/UareHack.txt
2.拿到shell可以获取ichunqiu用户取ichunqiu用户玜容容🎜>3.getshell后,传msf木马无法反弹,最后使用QuarksPwDump拿到了ichunqiu用户密码HASH,在线破解拿到>
bendera值:123qwe123
Atas ialah kandungan terperinci Bagaimana untuk menganalisis penulisan soalan CTF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!