SQL注入漏洞测试(布尔盲注)——解题记录
打开靶场界面
先简单查看url,在输入框输入东西。都没有反应。
看到下方滚动条,点击后页面跳转。
查看url,对url进行简单的漏洞测试,发现页面只有T/F。盲注存在!
对于盲注最快的无非是sqlmap
sqlmap -U --batch --dbs .......
password 密文 可尝试各种解密。一般md5
完成布尔盲注
难点:找注入点,细心。
技术特点:手工注入只能返回T/F ,需要猜!
什么是盲注+手工注入
什么是盲注
1. 基础概念
- 定义:在服务器没有错误回显的时候完成的注入攻击。
- 分类:
- 布尔盲注:页面没有报错通知,只能靠返回True或False页面来判断注入是否成功
- 时间盲注:页面无任何反应,加入sleep()函数,根据页面返回时间判断注入是否成功
2.常用函数
3.易错和难点
我相信看这个帖子的人都是有学过相关知识的朋友,听懂可以,但是一上手操作就是各种错误,问题也不知出在哪里。下面就总结下我遇到的易错点
盲注的核心结构
必须牢记
- length():length(database())>2 // 推测数据库名长度大于2,数字长度可以更换,这个结构很简单,多敲几遍即会
- substr(): substr(X,1,1) // X就是费劲千辛万苦找到的字符串,或者是查询语句,查出的结果还是字符串;取第几位,取几位;无论这个结构多长,他都是由三部分组成,记住这个结构,输出的是一个字符。
- ascii(): ascii(substr()) //括号里面的substr就是输出一个字符,你就把他看做字符a就行,看上一行;此函数输出一个字符的ASCII值,我们利用这个数字比大小,就能慢慢猜测出来他的值了,反推回就是某个字符串了。想明白就很简单
函数套用拼接结构
- ascii(substr())>2 // 看懂上边的,这个并不难,只是复杂点在substr里面会套用注入语句。举例如下
select table_name from information_schema.tables where table_schema=database() limit 0,1//这句就是基础,基础不会就从前面再学!
substr(X,1,1) // 上面刚讲完
ascii(x) >100 //上面刚讲完
ascii(substr(X,1,1))>100 //前2个函数的组合能看懂吗?好的,下一条我在拿“基础”扩展这个X
‘ or ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100# // 各位只是把第一行代码 放入到了X中,能看明白了吧,下面要做的就是敲熟它。
如果是时间盲注的话,就试用下if()和sleep()函数,核心是把页面显示正确或错误(布尔盲注),变为了页面加载时间长短来判断。函数 上面第2点有定义,下面第4点有实际用例。
4.使用示例(看懂第3点,下面的语句只是复杂,但并不是天数了吧)
个人建议:盲注还是用工具。手注可以增加基础牢固</邪恶/>