看起来有点难(布尔型注入)
::: {.container}
::: {.post}
::: {.show-content}
工具:sqlmap
分析:http://ctf5.shiyanbar.com/basic/inject/index.php?admin=&pass=&action=login
参数有三个,用户名和密码加上login.
如果是错误的的用户名,则提示数据库连接失败,用户名会显示在网页上。
::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\
::: {.image-caption}
:::
:::
加单引号,没有用报错,但数据库连接失败也没有显示了。
输入admin,显示错误的用户名和密码,,,,不同的反馈说明,admin是存在的。
如果输入的用户名存在,那么就会显示”数据库连接失败!”
::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\
::: {.image-caption}
:::
:::
python sqlmap.py -u
"ctf5.shiyanbar.com/basic/inject/index.php?admin=admin&pass=admin&action=login"
-technique B --dbs --level 3
检测布尔盲注
::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\
::: {.image-caption}
:::
:::
参考页面:http://wooyun.jozxing.cc/static/drops/tips-143.html
探测等级(参数:--level)
共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,你也可以根据相应的格式添加自己的payload。
这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP
Cookie在level为2的时候就会测试,HTTP
User-Agent/Referer头在level为3的时候就会测试。
总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。
测试是否是注入参数:-technique
这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式。支持的探测方式如下:B:
Boolean-based blind SQL injection(布尔型注入) E: Error-based SQL
injection(报错型注入) U: UNION query SQL injection(可联合查询注入)
S: Stacked queries SQL injection(可多语句查询注入) T: Time-based blind
SQL injection(基于时间延迟注入)
下面用的命令和上一题差不多。。
::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\
::: {.image-caption}
:::
:::
\
::: {.image-package index=”3”}
{.uploaded-img
width=”auto” height=”auto”}\
::: {.image-caption}
:::
:::
输入用户名和密码即可得到key.
:::
:::
:::