SQL注入刷题--buuctf

SQL注入刷题--buuctf
FLYFISHBUU SQL COURSE 1
流程
这题是写sqli-labs后刷 的,确实带来一点不一样的感觉。
依照sqli-labs的惯性,是在登录里面进行sql注入。
不过用弱口令试了几次,发现没什么用。因此去找了WP。
发现sql注入是可以不在登录界面进行的,没有思路的时候可以在网络里找找线索。
按F12打开网络,点击测试新闻1,可以发现一个content_detail.php?id=1不正常的名字,因此尝试访问urlhttp://0a577521-dfc0-45cf-8bc5-2bd8255566bd.node5.buuoj.cn:81/backend/content_detail.php?id=1,有回显。
修改id内容判断是否存在sql注入
尝试了id=1' %23 id =1" %23发现都没有回显,也没有报错,再用逻辑判断也没有用,接着尝试id=1 and 1=1 和 id=1 and 1=2,发现前者回显正常,后者没有回显,因此是数字型注入。判断的时候科技园先尝试数字型注入,去除之后再进行字符型注入判断
判断列数
id=1 order by 3发现没有回显,再减少列数id =1 order by 2回显正常(?为什么减少,这里应该从1开始慢慢尝试)
判断回显位
懒得喷,校园网在这里没有办法进行
id=-1 union select 1,2 %23回显1,2
接下来就可以联合查询了
1 | #获取库名表名 |
这里获取到的c594fc56796ff9e90d5f56f186b889b5实际上是password的内容,并不是flag,还要回到登录页面,用账号密码admin=admin password=c594fc56796ff9e90d5f56f186b889b5登录查看,便可以成功获取flag
总结
登录页面
碰到这种登录页面,如果没有注册内容,或者其他可以操作的地方,那么可能只是弱口令?报错等正常直接的注入方式。但如果有注册内容,或者比如这题热点1存在附件,多学到了一种思路,nice try
注入点判断
这题的注入点和sqli-labs的注入点不太一样,乐,学到了。当没有思路的时候可以用网络看看是不是存在一些附件内容,比如这题的文件。
获取库名、列名、数据名
emmmm,不好说这里。写了这么多题目,还没有做到flag不在当前库下的,所以在获取到一堆库的时候,不用太担心查询问题,只要先顺着当前库往下查看就可以了
获取好几个表? 目前的办法是大部分flag都是user或者特定名字中,常规的id,email表,可以先不查看
列、数据一个一个尝试就行了,大部分不是很多
[极客大挑战 2019]
[极客大挑战 2019]EasySQL
流程
常见的登录页面,目前的习惯是先输入1 再用hackbar拿到提交内容后修改。提交http://c17025a5-5a8c-461c-ac6f-65ae18e70e19.node5.buuoj.cn:81/check.php?username=1&password=1,回显NO!
这里说明了 用户1是不在已有数据库中的,所以id=1 之后跟着的应该是or,用and会因为 前者id=1不存在一定是false,因而只能使用id =1' or 1=1 %23来尝试闭合 好像就是弱口令原理?
?username=1&password=1' or 1=1%23 使用这个弱口令直接回显flag了
[极客大挑战 2019]LoveSQL
流程
这题是上面easysql的延伸,所以还是尝试弱口令。发现可以直接登录,回显是账号密码,换成账号密码登录之后发现,和弱口令登录的回显一样。
根据开始页面的提示这次我把它们放在了那个地方,哼哼!,有点像放在数据库中的意思,所以可以尝试一下联合查询
闭合符用弱口令的时候已经知道了,是单引号闭合,接下来就是查看列数
查看列数
?先尝试?username=1' order by 5%23&password=1发现回显Unknown column '5' in 'order clause' 说明存在联合查询,剩下的按照正常流程来就行
尝试到1' order by 3回显NO!,说明查询语句是正确的,只是因为用户1不存在数据库中(验证方法:把1改成admin就可以正常登录了,回显内容和弱口令登录一样)
查看回显位
?username=1' union select 1,2,3%23&password=1回显2,3位置
启动联合查询
1 | #获取库名 |
然后就可以查看flag了太多了不方便可以打开源代码查看
[极客大挑战 2019]BabySQL
不想写了














