布尔盲注&脚本过waf

::: {.container}
::: {.post}
::: {.show-content}
题目:输入admin 

F12查看,是post提交方式,表单参数是id

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

输入admin;

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

sqlmap -u "http://ctf5.shiyanbar.com/web/earnest/index.php\"
--data="id=admin" --dbs --level 3

检测post注入,all tested parameters appear to be not
injectable,貌似不能注入,,

em.......…接下来该怎么办呢?


burp检测布尔盲注,可以看到,这个题目跟这篇文章提到的很像,但有所不同的是,该文章中

101                      account number is valid

666                       Invalid account number

101 and 1=1        account number is valid

101 and 1=2         Invalid account number

而在这个题目中,某些字符被检测到了(比如说’and’字符),所以需要避免使用这些字符。

我们需要构造语句如下,才能够获得信息。如果是sql injection detected!
也不知道结果是True还是False

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

1                              :     you are in 

2                             :        you are not in

1  "sql查询语句1"   :      you are  in

1  "sql查询语句2"   :         you are not in

现在看看哪些符号不能用:

and 不行,#不行,空格键被替换为+,order by不行,  union不行

单双引号可以,等号可以,大于号小于号可以,or可以,select可以,/**/可以

tamper脚本:chardoubleencode.py   双url编码      space2comment.py   
空格替换为/**/        

                        randomcase.py随机大小写(大小写绕过无效)              

                       charunicodeencode.py    (tamper script
'charunicodeencode' is only meant to be run against ASP or ASP.NET web
applications)  字符串 unicode 编码        

                       halfversionedmorekeywords.py关键字前加注释

                        versionedmorekeywords.py注释绕过             

sqlmap -u "http://ctf5.shiyanbar.com/web/earnest/index.php\"
--data="id=1" --dbs --level 3 -v --tamper charunicodeencode.py
space2comment.py

all tested parameters appear to be not injectable.    
这个waf真是严格啊,tamper脚本无效


看writeup,要针对该题目的过滤写个布尔盲注脚本,,本来以为是个sql注入题,结果还是个编程题。

近200行的脚本,再过一年我可能可以写。。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

2018.3.23更新,学习下怎么写注入脚本。

第一步,确定手注的payload,再通过代码简化。

输入1xxxx,反馈you are in说明是字符型注入

输入1',反馈you are not in,说明单引号未过滤
:::
:::
:::